数组过滤javascript

时间:2017-10-10 14:04:11

标签: javascript arrays

我在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]];




2 个答案:

答案 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);