我有一个数组数组,我需要按元素的位置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]]
这个问题使用了underscorejs,但我是javascript的新手,所以我很难将它应用到我的问题.
而这是Angularjs.
我希望你能帮我一臂之力.
PS:对不起我的英语,不是我的母语.
问候
您可以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));