У меня есть множество имен людей и их знание языков. То, что я хочу сделать, это передать фильтр на столбец языка и отфильтровать все результаты, которые не совпадают.
Это образец массива
var myArray = [["Steppen", "Spanish Polish"],
["Wolf", "Spanish Polish Tagalog"],
["Amanda", "Spanish"],
["Ada", "Polish"],
["Rhonda", "Spanish Tagalog"]];
. Что касается передачи в фильтрах, то это может быть либо один язык, либо несколько. Даже если один язык из фильтра соответствует - результат должен быть возвращен. Так, например, должен вернуться фильтр «Тагалог» - Вольф и Ронда. Фильтр «испанский польский» должен вернуть всех - есть совпадение на испанском или польском.
Я написал функцию фильтра, но по какой-то причине она застревает, когда я пропускаю фильтр «Tagalog», он повторяется только во второй ячейке массива (испанский польский Tagalog) и повторяется несколько раз вместо того, чтобы идти вперед.
Что я делаю не так, должен ли я повторять по-другому?
var userPassedFilter = new Array();
userPassedFilter[0] = "Tagalog";
newArray = consolidatedFilters(myArray, userPassedFilter);
console.log(newArray);
function consolidatedFilters(passedArray, passedFilter)
{
var filteredArray = passedArray.filter(
function(el)
{
for (var i = 0; i < passedArray.length; i++)
{
console.log("i is " + i);
for (var j in passedFilter)
{
console.log("Passed Filter j " + passedFilter[j]);
console.log("Passed Array i " + passedArray[i][1]);
console.log("String Search " + passedArray[i][1].search(passedFilter[j]));
if (passedArray[i][1].search(passedFilter[j]) != -1)
{
return true;
}
}
}
return false;
}
);
return filteredArray;
}