如果我有一组带有一组数字的数组,并想用.filter方法删除某些数字,我知道如何在需要删除单个项目时执行此操作(或者如果我可以使用数学表达式) ),但不能完全按照它们在数组中的值或位置来处理多个项目。
在下面的代码中,我希望新的数组选择返回数字10,12,15
另外,我确实只需要使用filter()方法。
JS
let random = [4, 10, 12, 15, 30];
let selection = random.filter(function(num){
return num === [10, 12, 30];
});
答案 0 :(得分:3)
您可以使用includes
:
let random = [4, 10, 12, 15, 30, 10, 10, 12, 5];
let selection = random.filter(function(num){
var good = [10, 12, 30]
return good.includes(num);
});
console.log(selection)
如果您更喜欢箭头功能的简洁性:
let random = [4, 10, 12, 15, 30, 10, 10, 12, 5];
let selection = random.filter(num => [10, 12, 30].includes(num))
console.log(selection)
答案 1 :(得分:1)
请原谅我,如果我不能正确理解它,但如果您要查找的是按项目索引过滤数组,则可以使用传递给filter
方法的回调的第二个参数,即index
。
let random = [4, 10, 12, 15, 30];
let selection = random.filter(function(num, index){
return index > 0 && index < 4;
});
console.log(selection);
答案 2 :(得分:1)
使用过滤器时,您确实需要一个返回true或false的条件,因此使用filter方法执行此操作的最简单方法是:
let random = [4, 10, 12, 15, 30];
let selection = random.filter(function(num){
if (num > 4 && num < 16) {return true};
});
另一种方法是按数组中的位置进行过滤,使用其他数组方法可以更好地实现。
答案 3 :(得分:-1)
如果我理解你的问题,你想要一个带有数组的函数,检查元素是否在你的大数组中,如果它们在那里,则删除它们。
过滤器可能不是你最好的选择,因为它不会改变原始数组,只会创建一个新数组。尝试使用拼接。
let random = [4, 10, 12, 15, 30];
function remove(array) {
for (var i = 0; i < array.length; i++) {
if(random.includes(array[i])){
random.splice(random.indexOf(array[i]), 1)
}
}
}
remove([10, 12, 30]);
console.log(random); // [4, 15]
我假设您要删除,因为如果您已经知道哪些元素可以过滤掉它们?为什么不直接将它们作为新数组传递给您的函数?过滤器无论如何都会创建一个新数组。
但是如果您想从第一个数组中删除元素,上面的答案可能有所帮助。