js两个数组对象通过关系键值对应,合并为新的对象

题目描述

通过以下关系

 num -> value
 amount -> total 

把数组对象oriData与objData根据type合并输出想到的结果

oriData = [  
  {num: 1, amount: 1, type: '1'},  
  {num: 2, amount: 2, type: '2'},  
  {num: 3, amount: 3, type: '3'}  
]
objData = [  
  {value: null, total: null, type: '1'},  
  {value: null, total: null, type: '2'},  
  {value: null, total: null, type: '3'}  
]

结果为

objData = [  
  {value: 1, total: 1, type: '1'},  
  {value: 2, total: 2, type: '2'},  
  {value: 3, total: 3, type: '3'}  
]

题目来源及自己的思路

我尝试了使用forEach遍历oriData与objData,并把他们assign起来,这样确实可以把两个数组对象合并,但是得到的结果就是objData中出现了新的属性值num与amount。数据有冗余,而且显得很low。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

let oriData = [  
   {num: 1, amount: 1, type: '1'},  
  {num: 2, amount: 2, type: '2'},  
  {num: 3, amount: 3, type: '3'}  
]  
let objData = [  
  {value: null, total: null, type: '1'},  
  {value: null, total: null, type: '2'},  
  {value: null, total: null, type: '3'}  
]  
  
objData.forEach(item=> {  
    oriData.forEach(oItem => {  
        if (item.type === oItem.type) {  
            item.value = oItem.num; 
            item.total = oItem.amount;  
            Object.assign(item, oItem)  
        }  
    })  
})

你期待的结果是什么?实际看到的错误信息又是什么?

有没有什么高大上的方法,可以做到通用性呢

待解决 悬赏分:70 - 离问题结束还有 507天21小时24分9秒
反对 0举报 0 收藏 0

我来回答

回答3