JS怎么合并数组中对象的相同属性,且属性值要根据该数组中对象的属性进行赋值?

新手上路,请多包涵
let list = [
        {asset_analysis: 0, authorization_type: 1, borrowing_restriction: 0, brand: 1, center_cost: 0},
        {asset_analysis: 0, authorization_type: 0, borrowing_restriction: 1, brand: 0, center_cost: 0},
        {asset_analysis: 0, authorization_type: 0, borrowing_restriction: 1, brand: 0, center_cost: 1}
]

请教各位大佬,有个需求要循环遍历某个对象数组,然后将这些对象的相同属性存到一个新对象中,新对象的属性值要根据数组对象的属性值来判断,0和0最后的属性值就是0,1和1或1和0的属性值就是1,最后出来的对象应该是这个样子

{asset_analysis: 0, authorization_type: 1, borrowing_restriction: 1, brand: 1, center_cost: 1}

这应该怎么做

阅读 5.9k
2 个回答
let list = [
    {asset_analysis: 0, authorization_type: 1, borrowing_restriction: 0, brand: 1, center_cost: 0},
    {asset_analysis: 0, authorization_type: 0, borrowing_restriction: 1, brand: 0, center_cost: 0},
    {asset_analysis: 0, authorization_type: 0, borrowing_restriction: 1, brand: 0, center_cost: 1}
]

const newObj = {}

list.forEach(item => {
    Object.keys(item).forEach(key => {
        if (!newObj[key]) {
            newObj[key] = 0
        }

        if (item[key]) {
            newObj[key] = item[key]
        }
    })
})

console.log(JSON.stringify(newObj, null, 2))

打印结果:

clipboard.png

list = [
        {asset_analysis: 0, authorization_type: 1, borrowing_restriction: 0, brand: 1, center_cost: 0},
        {asset_analysis: 0, authorization_type: 0, borrowing_restriction: 1, brand: 0, center_cost: 0},
        {asset_analysis: 0, authorization_type: 0, borrowing_restriction: 1, brand: 0, center_cost: 1}
]
list.reduce((s, val)=>{
    Object.keys(val).forEach(v=>{
        s[v] = s[v] || val[v]
    })
    return s
})
    
    
    
    

clipboard.png

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