我有一个包含人名和他们语言能力的数组。我想对语言列传递一个过滤器,从而过滤掉不匹配的结果。
这是示例数组:
var myArray = [["Steppen", "Spanish Polish"],
["Wolf", "Spanish Polish Tagalog"],
["Amanda", "Spanish"],
["Ada", "Polish"],
["Rhonda", "Spanish Tagalog"]];
在传递筛选器方面,它可以是一个语言或多种语言。即使从筛选器中匹配的一种语言也要返回结果。例如,"塔加路语"的筛选器应该返回 - Wolf 和 Rhonda。"西班牙语 波兰语"的筛选器应该返回所有人 - 在西班牙语或波兰语中都有匹配。
我编写了筛选函数,但出现问题了,当我传递 "塔加路语" 的筛选器时,它仅迭代到数组中的第二个单元格(西班牙语 波兰语 塔加路语),并且重复多次而不是继续前进。
我做错了什么?是否应该以不同的方式进行迭代?
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;
}
.filter
还是原生数组的.filter
?看起来passedArray
是你描述的数组,它不是一个jQuery对象。 - pimvdbpassedArray
是那个数组,那么passedArray.filter
根本不是 jQuery 版本,而是内置的.filter
。[...].filter
是原生版本,$(...).filter
是 jQuery 版本。 - pimvdb