我在js中有这些变量:
var arr = [['name1', 2, 'filter1'], ['name2', 5, 'filter2'],['name3', 8, 'filter3'], ['name4', 1, 'filter2']];
var filter = 'filter1' //(this variable may have values: filter1, filter2, filter3)*.

如何根据过滤器变量值过滤数组 arr ?
我的例子必须返回:
var arr = [['name2', 5], ['name4', 1]];

答案 0 :(得分:2)
通过使用过滤器方法,您可以轻松测试所需内容并仅返回匹配元素
var arr = [['name1', 2, 'filter1'], ['name2', 5, 'filter2'],['name3', 8, 'filter3'], ['name4', 1, 'filter2']];
var filter = 'filter2';
var result = arr.filter(function(res){
return res[2] == filter;
}).map(function(filtered){
return filtered.slice(0,2);
});
console.log(result);

答案 1 :(得分:2)
除了过滤之外,您只需要获得内部数组的前两个元素。
Array#filter
返回数组中的相同元素。要获取没有过滤器项目的所需项目,您需要返回前两个对象,或者使用给定过滤器过滤项目(建议2)。
var array = [['name1', 2, 'filter1'], ['name2', 5, 'filter2'], ['name3', 8, 'filter3'], ['name4', 1, 'filter2']],
filter = 'filter2',
result = array.filter(a => a[2] === filter).map(a => a.slice(0, 2));
console.log(result);

var array = [['name1', 2, 'filter1'], ['name2', 5, 'filter2'], ['name3', 8, 'filter3'], ['name4', 1, 'filter2']],
filter = 'filter2',
result = array
.filter(a => a.some(v => v === filter))
.map(a => a.filter(v => v !== filter));
console.log(result);