массив .filter () с использованием элементов другого массива

У меня есть множество имен людей и их знание языков. То, что я хочу сделать, это передать фильтр на столбец языка и отфильтровать все результаты, которые не совпадают.

Это образец массива

   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;
 }
8
задан pimvdb 8 September 2011 в 20:33
поделиться