针对含有对象的数组,如何获取相同属性的个数

数据如图所示
图片描述
现在我想获得IACCESSEQUIPID属性值相同的个数,比如在这个数据中,
IACCESSEQUIPID等于1的有8个,
IACCESSEQUIPID等于3的有4个,
如何进行循环运算呢?

for(var i = 0;i<arr.length;i++){
    if(arr[i].IACCESSEQUIPID == arr[i-1].IACCESSEQUIPID)
    //?我应该如何进行比较呢?

}
阅读 2.9k
2 个回答

给你写个简单的方法,你可以参考下:

var arr = [
  { IACCESSEQUIPID: 1 },
  { IACCESSEQUIPID: 1 },
  { IACCESSEQUIPID: 2 },
  { IACCESSEQUIPID: 1 },
  { IACCESSEQUIPID: 3 },
  { IACCESSEQUIPID: 2 },
  { IACCESSEQUIPID: 1 },
  { IACCESSEQUIPID: 2 },
  { IACCESSEQUIPID: 1 },
  { IACCESSEQUIPID: 5 },
]

function compare() {
  var compareObj = {}
  for(var i = 0;i<arr.length;i++){
    if (compareObj['value:' + arr[i].IACCESSEQUIPID] === undefined) {
      compareObj['value:' + arr[i].IACCESSEQUIPID] = 1
    } else {
      compareObj['value:' + arr[i].IACCESSEQUIPID] = compareObj['value:' + arr[i].IACCESSEQUIPID] + 1
    }
  }
  console.log('所有数据的合集', compareObj)
}

compare()

clipboard.png

这一个图片,我看到N多次了,
我感觉你可以稍花一点时间 去学习一下lodash库,基本可以解决你在这里提过的所有问题
比如这个问题
lodash.countby 就可以解决

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题