题目描述
通过以下关系
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)
}
})
})
你期待的结果是什么?实际看到的错误信息又是什么?
有没有什么高大上的方法,可以做到通用性呢
Object.assign()会把源对象的所有属性复制到目标对象上,数组是引用类型,当改变其中某个值时,整个对象会随之改变。所以你
这一句是多余的,去掉就可以了