Я пытаюсь создать функцию, которая удаляет строки из массива, если они включают символ в определенном другом списке
Вот код:
var possible = ["salutations", "goodbye", "thanks", "welcome"];
var incorrect = ["o"];
console.log(possible);
function narrowdown(possible, incorrect)
{
var templist = possible;
for (i in possible)
{
console.log(i + " " + possible[i]);
var array1 = possible[i].split("");
var common = array1.filter(value => incorrect.includes(value));
console.log(common)
if (common.length)
{
templist.splice(i, 1);
}
}
possible = templist;
}
narrowdown(possible, incorrect);
console.log(possible);
Здесь я пытаюсь чтобы удалить все слова, содержащие букву o. Я создал временный массив в функции, потому что раньше со мной случалось, что a for l oop полностью пропускает элементы. Код сначала регистрирует индекс элемента в списке, а затем сам элемент.
Затем он превращает слово в массив и проверяет совпадение между ним и «неправильным» массивом. Он делает это правильно и регистрирует перекрывающиеся символы. Проблема вроде бы в том, что он почему-то пропускает пункт "до свидания". Он даже не обрабатывает его.
Вот результат, который я получаю:
[ 'salutations', 'goodbye', 'thanks', 'welcome' ]
0 salutations
[ 'o' ]
1 thanks
[]
2 welcome
[ 'o' ]
[ 'goodbye', 'thanks' ]