我有两个数组
let arr1 = [{'id': 'ee', 'seat': '12'},
{'id': 'aa', 'seat': '8'}
]
let arr2 = [
{'id': 's22', 'num': ''},
{'id': '2s2', 'num': ''}
]
我想将arr1中的席位值复制到arr2的num属性,但我只获得for循环中的最后一个arr1席位值。
for( let i = 0; i <= arr1.length; i++) {
for( let x = 0; x <= arr2.length; x++) {
arr2[x]['num'] = arr1[i]['seat'];
}
}
console.log(arr2);
答案 0 :(得分:1)
使用arr2
对Array.forEach()
进行迭代,并从seat
按索引取相应的arr1
值:
const arr1 = [{'id': 'ee', 'seat': '12'},{'id': 'aa', 'seat': '8'}]
const arr2 = [{'id': 's22', 'num': ''},{'id': '2s2', 'num': ''}]
arr2.forEach((o, i) => o.num = arr1[i].seat)
console.log(arr2)
答案 1 :(得分:0)
您只需要一个循环,并检查数组的索引是否(仅)小于,而不是两个数组的最小长度。
如果索引获取数组的长度,则访问返回undefined
,因为此元素不在数组中。
进一步访问此属性会引发错误:
Unable to get property 'seat' of undefined or null reference
var arr1 = [{ id: 'ee', seat: '12' }, { id: 'aa', seat: '8' }],
arr2 = [{ id: 's22', num: '' }, { id: '2s2', num: '' }],
i, l;
for (i = 0, l = Math.min(arr1.length, arr2.length); i < l; i++) {
arr2[i].num = arr1[i].seat;
}
console.log(arr2);
&#13;
答案 2 :(得分:-1)
你可以只用一个for循环。
for(let i = 0; i < arr1.length; i++) {
arr2[i].num = arr1[i].seat;
}
希望这有帮助!
答案 3 :(得分:-2)
假设您想要匹配索引,这应该这样做。
const arr1 = [
{'id': 'ee', 'seat': '12'},
{'id': 'aa', 'seat': '8'}
]
const arr2 = [
{'id': 's22', 'num': ''},
{'id': '2s2', 'num': ''}
]
const result = arr2.map((e, i) => ({...e, ...{num: arr1[i].seat}}))
console.log(result)
&#13;
如果你想要每个seat
中的所有num
,那就不会那么难了。