Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找对象的JavaScript数组中的属性是否有效_Javascript - Fatal编程技术网

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

查找对象的JavaScript数组中的属性是否有效,javascript,Javascript,我在JavaScript数组中有一组客户对象 var customer = Customer(); customer.firstName = "John"; customer.isEnabled = true var customer2 = Customer(); customer2.firstName = "Mary"; customer2.isEnabled = false var customers = [customer,customer2]; 现在,如果custome

我在JavaScript数组中有一组客户对象

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。基本上,我需要一种方法来验证数组中每个对象(客户)的属性

更新:

因此,使用some函数,我可以执行如下操作:

customers.some(e => e.isEnabled == true) 
因此,现在只有当数组中的所有元素都将isEnabled属性设置为true时,它才会返回true。是吗?

你想要的是或

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

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
函数库对于这类问题也很好,下面是一个有趣的示例:

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

在图书馆结账。它已经为您编写了很多这样的函数。

使用
每种方法:

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

如果您使用的是下划线.js,那么可以使用u.where()函数

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

基本上,只有当数组中所有属性为isEnabled的项都为true时,它才会返回true。是的,我有点误解了你,包括另一个带有[]的示例。every()谢谢!我想我的问题措辞不当。对不起。每个人都很棒!不客气。此外,lodash建议本身也不错,尽管它对您的问题有点过分,但它允许您在许多其他场景中使用这种编程风格(而且会更优雅)。还有拉姆达。