在JavaScript对象数组中查找属性是否有效
Find if a Property is Valid inside JavaScript Array of Objects
我在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。是这样吗?
您想要的是Array.prototype.some或Array.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
使用every
方法:
customers.every(function(v){ return v.isEnabled; }); // will return true if every object 'is enabled'
如果使用Undercore.js,可以使用_.where()函数。
_.where(customers, {isEnabled: true});
签出lodash库。它已经为您编写了许多这样的函数。
相关文章:
- 检查对象的所有属性是否未定义
- 检查来自不同数组的两个元素的一个属性是否相等
- 正在检查属性的属性是否存在
- 在 Forerunner 数据库集合中创建主键时,key 属性是否可以位于集合对象的对象内部
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- Ember 1.0 预发行版支持属性是否已更改
- VueJS:检查属性是否具有来自其他属性的值
- 创建nonce并将其输出为数据属性是否存在漏洞
- 检查数组中的对象属性是否与具有相同ID的另一个对象重复
- 如何在Ember.js中创建一个计算属性来查看单个EmberData属性是否脏
- Javascript-在检查对象属性是否存在时避免异步竞争条件
- 如何指定输入元素中允许的最大字符数 - 设置 maxlength 属性是否足够
- 如何检查主干模型中的嵌套属性是否已更改
- HTML 文本框值属性是否安全免受 XSS 攻击
- 在 HTML 定位点中指定“语言”属性是否会更改事件行为
- 在灯泡阶段检查对象属性是否存在
- 给定元素本身的 aria-live 属性是否可以使用 javascript 动态设置
- 立即调用的属性是否可以引用它所分配到的对象
- 检查 css 属性是否应用了 !重要属性
- 检查数据属性是否具有值