gpt4 book ai didi

javascript - .filter() 数组使用另一个数组的元素

转载 作者:数据小太阳 更新时间:2023-10-29 04:23:37 30 4
gpt4 key购买 nike

我有一系列人名以及他们的语言知识。我想要做的是将过滤器传递到语言列并过滤掉所有不匹配的结果。

这是示例数组

   var myArray = [["Steppen", "Spanish Polish"],
["Wolf", "Spanish Polish Tagalog"],
["Amanda", "Spanish"],
["Ada", "Polish"],
["Rhonda", "Spanish Tagalog"]];

就传递过滤器而言,它可以是一种语言,也可以是多种语言。即使过滤器中的一种语言匹配 - 也应该返回结果。因此,例如,“他加禄语”过滤器应该返回 - Wolf 和 Rhonda。 “Spanish Polish”过滤器应返回每个人 - 有西类牙语或波兰语的匹配项。

我编写了过滤器函数,但由于某种原因它卡住了,当我通过过滤器“他加禄语”时,它只迭代到数组中的第二个单元格(西类牙语波兰语他加禄语)并重复多次而不是继续。

我做错了什么,我应该以不同的方式迭代吗?

 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;
}

最佳答案

这是 ES6 方式的终极解决方案:无需在另一个线程中再次搜索相同的查询。

var array1 = ['a', 'b', 'c', 'd', 'e'];
var array2 = ['b', 'd', 'f'];

array1 = array1.filter(function(item) {
return !array2.includes(item);
})
console.log(array1); // [ 'a', 'c', 'e' ]
console.log(array2); // [ 'b', 'd', 'f' ]

关于javascript - .filter() 数组使用另一个数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7353917/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com