对象和对象数组这种遍历怎么做?

一个obj的值为
image.png
一个tabList为tabList:

[
        {
          label:'全部',
          name:'name1',
          number:10,
          id:1
        },
        {
          label:'处理中',
          name:'name2',
          number:4,
          id:2
        },
        {
          label:'已采纳',
          name:'name3',
          number:4,
          id:3
        },
        {
          label:'未采纳',
          name:'name4',
          number:1,
          id:4
        }
      ],

怎么通过循环遍历将obj里面key值对应的value值相应的赋值给tabList里面的number,当tabList里面的label为全部时,该项的number的值为obj里面所有key的value之和

阅读 1.7k
3 个回答

tabList.forEach(v => v.number = v.label == '全部' ? Object.values(obj).reduce((sum,n) => sum+(+n||0), 0) : (obj[v.label] || 0))

    const obj = { '处理中': 4, '已提交': 1, '已采纳': 4, '未采纳': 1, }

    const tablist = [
        {
            label: '全部',
        },
        {
            label: '处理中',
        },
        {
            label: '已采纳',
        },
        {
            label: '未采纳',
        }
    ]
    obj['全部']=Object.values(obj).reduce((acc,cur)=>acc+cur)
    for (const iterator of tablist) {
        iterator.number = obj[iterator.label]
    }
    console.log(tablist)
const obj = {
  '处理中': 4,
  '已提交': 1,
  '已采纳': 4,
  '未采纳': 1
}

const tabList = [
  {
    label:'全部',
    name:'name1',
    number: 0,
    id:1
  },
  {
    label:'处理中',
    name:'name2',
    number: 0,
    id:2
  },
  {
    label:'已采纳',
    name:'name3',
    number: 0,
    id:3
  },
  {
    label:'未采纳',
    name:'name4',
    number: 0,
    id:4
  }
]

const total = Object.values(obj).reduce((prev, curr) => prev + curr, 0)

tabList.forEach(item => {
  if (item.label === '全部') {
    item.number = total
  } else {
    item.number = obj[item.label] ?? 0
  }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题