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);
控制台日志(总和)刚刚