如何使用过滤器数组删除数组中的项目? [复制]
Posted
技术标签:
【中文标题】如何使用过滤器数组删除数组中的项目? [复制]【英文标题】:How to use filter array to remove items in array? [duplicate] 【发布时间】:2017-09-17 11:32:52 【问题描述】:我有一个数组:
var arr = [1,2,4,5,1,2,3,4,5];
我还有另一个数组:
var removeArr = [1,3,5];
我希望它删除 arr 中具有 removeArr 的元素:
var result = arr.filter(function(item)
return item != removeArr[???];
);
我尝试使用循环对其进行迭代,但它不起作用。
【问题讨论】:
检查其他数组是否包含该项 developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 如果所有答案都相同,我该如何选择最佳答案? 【参考方案1】:您可以使用Array#filter
以及Array#indexOf
函数达到所需的输出。
var arr = [1,2,4,5,1,2,3,4,5],
removeArr = [1,3,5],
result = arr.filter(function(item)
return removeArr.indexOf(item) == -1;
);
console.log(result);
【讨论】:
【参考方案2】: var arr = [1,2,4,5,1,2,3,4,5];
var removeArr = [1,3,5];
var result = arr.filter(x => !removeArr.includes(x));
console.log(result);
【讨论】:
【参考方案3】:您可以使用Set
并在过滤时进行测试。
var array = [1, 2, 4, 5, 1, 2, 3, 4, 5],
removeArray = [1, 3, 5],
result = array.filter((s => a => !s.has(a))(new Set(removeArray)));
console.log(result);
【讨论】:
这是一个聪明的!花了一些时间来了解它是如何工作的,谢谢。 它在集合上使用闭包。 是的,我是在改写成常规的 IIFE 模板后才发现的。【参考方案4】:var result = arr.filter(function(item)
return removeArr.indexOf(item) === -1; // if the item is not included in removeArr, then return true (include it in the result array)
);
【讨论】:
【参考方案5】:您可以通过检查项的索引是否不是-1来检查值是否在数组中。
var result = arr.filter(item => removeArr.indexOf(item) === -1)
【讨论】:
以上是关于如何使用过滤器数组删除数组中的项目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何删除 mongodb 特定文档中的数组中的项目? [复制]