使用两个JS对象数组的对象属性值

时间:2018-04-24 15:21:08

标签: javascript arrays

我有两个数组

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);

4 个答案:

答案 0 :(得分:1)

使用arr2Array.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

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:-1)

你可以只用一个for循环。

for(let i = 0; i < arr1.length; i++) {
    arr2[i].num = arr1[i].seat;
}

希望这有帮助!

答案 3 :(得分:-2)

假设您想要匹配索引,这应该这样做。

&#13;
&#13;
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;
&#13;
&#13;

如果你想要每个seat中的所有num,那就不会那么难了。