javascript - 如何在javascript中过滤多个值(或运算)

标签 javascript arrays

我有一个数组数组,我需要按元素的位置 0 进行过滤。

我需要过滤从另一个数组中提取的多个值,所以 OR 运算符不是我的方式,因为我拥有的值的数量不固定。

var arr = [
    ["202",27,44],
    ["202",194,35],
    ["200",233,344],
    ["190",333,444],
];

var newArr = arr.filter(function(item){
    //fixed amount of values, not working for my purpose
    return item[0] === "190" || item = "200"
});

我需要类似的东西

var newArr = arr.filter(function(item){    
    return item[0] === filterValues
    //where filterValues = ["190","200",etc]
});

在这种情况下函数应该返回:

[["200",233,344],["190",333,444]]

This问题使用 underscorejs 但我是 javascript 的新手,所以我很难将它应用于我的问题。

this适用于 Angularjs。

我希望你能帮我一把。

P.S:对不起我的英语,它不是我的母语。

问候

最佳答案

您可以使用 indexOf()在数组上查找数组是否包含值。如果不存在,它将是 -1,否则它将是该值的第一个实例在数组中的索引,即 >=0

所以,例如:

arr.filter(function(item){return ["190","200"].indexOf(item[0])>=0})

根据您的评论,过滤器键嵌入嵌套数组中。您可以使用 map() 提取这些,例如

var keys = [["190",222],["200",344]].map(function(inner){return inner[0]});

实现此功能的函数(感谢 @Shomz 的大部分代码)如下所示:

var arr = [
    ["202",27,44],
    ["202",194,35],
    ["200",233,344],
    ["190",333,444],
];
  
function myFilter(query) {
  return arr.filter(function(item){
    return query.indexOf(item[0]) >= 0;
  })
}

var q = [["190",222],["200",344]];
var keys = q.map(function(inner){
  return inner[0];
});

alert(myFilter(keys));

关于javascript - 如何在javascript中过滤多个值(或运算),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711258/

相关文章:

javascript - jQuery $('element' , this) 选择器,什么意思?

java - 在 java 中制作 3 x 3, 2d 数组

c - 使用双指针访问二维数组元素

javascript - JavaScript 中的对象数组

javascript - 如何通过类名获取元素

javascript - 将变量绑定(bind)到此

javascript - jQuery 抛出 element.find() 不是函数的错误

javascript - [Wordpress + PHP + MySQL]插件内的数据库SELECT查询没有返回结果

php - 如何根据元素中的整数值对元素进行排序?

javascript - 在javascript中将数组分成3组