使用.filter()方法返回多个项目 - JavaScript

时间:2017-12-03 01:09:46

标签: javascript arrays filter

如果我有一组带有一组数字的数组,并想用.filter方法删除某些数字,我知道如何在需要删除单个项目时执行此操作(或者如果我可以使用数学表达式) ),但不能完全按照它们在数组中的值或位置来处理多个项目。

在下面的代码中,我希望新的数组选择返回数字10,12,15

另外,我确实只需要使用filter()方法。

JS

let random = [4, 10, 12, 15, 30];
let selection = random.filter(function(num){

  return num === [10, 12, 30];

});

4 个答案:

答案 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]

我假设您要删除,因为如果您已经知道哪些元素可以过滤掉它们?为什么不直接将它们作为新数组传递给您的函数?过滤器无论如何都会创建一个新数组。

但是如果您想从第一个数组中删除元素,上面的答案可能有所帮助。