Member 13835151 Ответов: 1

!Array.includes() = не включает (в js)?


Я пытаюсь использовать
if (!array.includes()) { 
чтобы проверить введенное пользователем слово против случайно выбранного слова в массиве, чтобы увидеть, сколько букв эти два имеют общего, и вырезать все слова в массиве, которые не имеют этих букв. Но !array.includes (), похоже, ведет себя не так, как я ожидал-он вырезает все значения из массива.

Что я уже пробовал:

Вот как выглядит соответствующий код:

comWords = inputWord + compWord; 
comWords = comWords.split('').sort().join(''); 
match = comWords.length - comWords.replace(/(\w)\1+/g, '$1').length; 
for (let e = 0; e < 5; e++) {
	for (let f = 0; f < possWords.length; f++) {
		if (match === 0) {
			if (possWords[f].includes(compWord[e])) {
				possWords.splice(f, 1); 
			}
		} else {
			if (!possWords[f].includes(compWord[e])) {
				possWords.splice(f, 1); 
			} 
		} 
	}
}


Первый оператор includes (), кажется, работает нормально, но я, кажется, испортил его !includes (). Это то, как вы проверяете, если что-то не включает или я нахожусь здесь на совершенно неправильном пути?

Richard Deeming

Когда вы удаляете элементы из массива в цикле, всегда лучше работать в обратном направлении. В противном случае вы будете в конечном итоге пропускать элементы.

arr = [0, 1, 2];

i = 0;            // arr[i] = 0

arr.splice(i, 1); // arr = [1, 2];

i++;              // i = 1; 
                  // arr[i] = 2; 
                  // loop has skipped 1

1 Ответов

Рейтинг:
11

phil.o

Вы пробовали поместить все выражение в скобки для отрицаемой части?
Что-то вроде:

if (!(possWords[f].includes(compWord[e])))

Я не очень много занимаюсь javascript, но это то, что я бы попробовал, если бы столкнулся с вашей проблемой.
Любезно.


Member 13835151

Спасибо, это действительно кажется правильным синтаксисом. К сожалению, все еще не работает, так что я думаю, что проблема в моей логике.

phil.o

Я не знаю, что означает "не работает" в этом контексте, но нормально ли, что один и тот же код выполняется в обоих случаях? В зависимости от того, включает ли массив слово или нет, кажется логичным, что принятые меры должны варьироваться, не так ли?

Member 13835151

Да, моя поздняя ночная логика здесь была ошибочной. Я больше не использую !array.includes() вообще-то теперь он работает лучше.