首页 > 解决方案 > 如何有条件地计算对象中的元素数量?

问题描述

我有一个对象,例如

{
  a: {
    x: 1,
    y: 2
  },
  b: {
    x: 1,
    y: 2
  },
  c: {
    x: 100,
    y: 2
  },
}

我想计算满足条件的元素数量x: 1。有没有一种简单的方法可以做到这一点?

我可以采用简单的方式,但我想学习 JavaScriptonic 方式(如果有的话):

let data = {
  a: {
    x: 1,
    y: 2
  },
  b: {
    x: 1,
    y: 2
  },
  c: {
    x: 100,
    y: 2
  },
}

let counter = 0
for (k in data) {
  if (data[k].x === 1) {
    counter += 1
  }
}

console.log(counter)
// 2

标签: javascriptcounter

解决方案


我能想到的最干净的方法是使用Object.values

console.log(Object.values(data).filter(v => v.x === 1).length); // 2

推荐阅读