在JavaScript对象数组中查找属性是否有效

时间:2015-12-30 19:20:46

标签: javascript

我在JavaScript数组中有一组Customer对象。

var customer = Customer(); 
customer.firstName = "John"; 
customer.isEnabled = true 

var customer2 = Customer(); 
customer2.firstName = "Mary"; 
customer2.isEnabled = false

var customers = [customer,customer2]; 

现在,如果customers数组属性中的任何对象“isEnabled”= false,我想返回true。基本上我想要一种方法来验证数组(客户)内的每个对象的属性。

更新:

所以使用某些功能我可以这样做:

customers.some(e => e.isEnabled == true) 

所以,现在只有当数组中的所有元素都将isEnabled属性设置为true时,它才会返回true。是吗?

4 个答案:

答案 0 :(得分:3)

您想要的是Array.prototype.someArray.prototype.every

以下是您在案例中使用它的方式:

var customers = [
    { firstName: "John", isEnabled: true },
    { firstName: "Mary", isEnabled: false },
];

var goodCustomers = [
    { firstName: "George", isEnabled: true },
    { firstName: "Sandra", isEnabled: true },
];

function isNotEnabled(customer) {
    return !customer.isEnabled;
}
function isEnabled(customer) {
    return customer.isEnabled;
}

customers.some(isNotEnabled);
//=> true
goodCustomers.some(isNotEnabled);
//=> false

customers.every(isEnabled);
//=> false
goodCustomers.every(isEnabled);
//=> true

功能库也非常适合这类问题,这里只是为了好玩的Ramda示例:

R.all(R.prop("isEnabled"), customers);
//=> false
R.any(R.compose(R.not, R.prop("isEnabled")), customers);
//=> true

答案 1 :(得分:0)

使用every方法:

customers.every(function(v){ return v.isEnabled;  }); // will return true if every object 'is enabled'

答案 2 :(得分:0)

如果您使用的是Underscore.js,则可以使用_.where()函数。

_.where(customers, {isEnabled: true});

答案 3 :(得分:-2)

结帐lodash库。它已经为你编写了很多这样的功能。