Javascript 遍历对象列表并检查属性值
我有一个对象列表:Javascript 遍历对象列表并检查属性值,javascript,performance,loops,Javascript,Performance,Loops,我有一个对象列表: var myObj = { obj1: {name: "bob", employed: true}, obj2: {name: "dave", employed: false}, obj3: {name: "james", employed: true}, } 迭代对象列表并计算有多少对象相等的最有效/最优雅的方法是什么employed:true。写这篇文章有捷径吗?我正在考虑按如下方式实施它: const countEmployed = () =>
var myObj = {
obj1: {name: "bob", employed: true},
obj2: {name: "dave", employed: false},
obj3: {name: "james", employed: true},
}
迭代对象列表并计算有多少对象相等的最有效/最优雅的方法是什么employed:true
。写这篇文章有捷径吗?我正在考虑按如下方式实施它:
const countEmployed = () => {
for (let key in myObj) {
if (myObj .hasOwnProperty(key)) {
}
}
}
通常效率并不等于优雅,但是如果您正在寻找一种简短而优雅的方法,您可以使用
Array#filter
:
const myObj={
obj1:{name:“bob”,雇用:true},
obj2:{name:“dave”,雇用:false},
obj3:{姓名:“詹姆斯”,雇用:真},
};
constr=Object.values(myObj).filter({employed})=>employed.length;
控制台日志(r)
从技术上讲,您可以使用Object.values()
首先获取所有属性值。然后,您可以使用Array.filter()
仅获取必要的值
基于此,我将做以下工作:
const myObj={
obj1:{name:“bob”,雇用:true},
obj2:{name:“dave”,雇用:false},
obj3:{姓名:“詹姆斯”,雇用:真},
}
const result=Object.values(myObj.filter)(e=>e.employed);
log('Count:',result.length)
您可以在对象上使用.reduce()
。values()
方法是使用的布尔值作为一个数字添加到总数中,如下所示:
const myObj={
obj1:{name:“bob”,雇用:true},
obj2:{name:“dave”,雇用:false},
obj3:{姓名:“詹姆斯”,雇用:真},
};
const sum=Object.values(myObj).reduce((t,{employed})=>t+employed,0);
控制台日志(总和)代码>刚刚