过滤数组中的数组,有一种优雅的方式吗?

时间:2017-08-21 13:05:26

标签: javascript

这个一直很适合我...

var myProperty = "FOO"

var expenseSelect = expenseArray.filter(function(obj){
    return obj.property == myProperty
}); 

但现在我的情况是obj.property是在expenseArray中的一系列属性[" FOO"," BAR"," WEE"] 。

有一种聪明的方法吗?或者我必须在循环内部完成整个循环吗?

2 个答案:

答案 0 :(得分:2)

如果要检查myProperty是否在阵列中,可以使用

进行

var myProperty = "FOO"

var expenseSelect = expenseArray.filter(function(obj){
    return obj.property.includes(myProperty);
}); 

答案 1 :(得分:0)

使用some()方法测试数组中至少有一个元素是否通过了由提供的函数实现的测试,它可以是一个简单的选项。

var myProperty = "FOO";
var expenseArray=[];
expenseArray[0]={ property: ["FOO", "BAR", "WEE"] };
expenseArray[1]={ property: ["NoFOO", "BAR", "WEE"]} ;

var expenseSelect = expenseArray.filter(function(obj){
    return obj.property.some(function(element,index,array){
      return element == myProperty;
    });
});

console.log(expenseSelect);