如何将两个数组组合成一个数组?(JS)反应



有两个像下面这样的数组。

const arrayA = {
0: {
id: XXXXXXX,
name: "test"
},
1: {
id: YYYYYYY,
name: "example"
}
}

const arrayB = {
0: {
id: XXXXXXX,
category: "sea",
}
1: {
id: YYYYYYY,
category: "mountain"
}
}

我想按每个id将这两个数组组合成一个数组,如下所示:

array C = {
0: {
id: XXXXXXX,
name: "test",
category: "sea",
},
1: {
id: YYYYYYY,
name: "example",
category: "mountain"
}  
}

最聪明的方法是什么?

实际上,没有数组,而是有键的对象,比如索引。您可以使用Object.keys进行迭代,并通过对象的键合并它们。

const arrayA = {
"0": {
id: 0,
name: "test"
},
"1": {
id: 1,
name: "example"
}
}

const arrayB = {
"0": {
id: 0,
category: "sea",
},
"1": {
id: 1,
category: "mountain"
}
}
const arrayC = {}
for(const key of Object.keys(arrayA)) {
arrayC[key] = {
...arrayA[key],
...arrayB[key],
}
}
console.log(arrayC)

您也可以使用reduce来代替通常的迭代

const arrayA = {
"0": {
id: 0,
name: "test"
},
"1": {
id: 1,
name: "example"
}
}

const arrayB = {
"0": {
id: 0,
category: "sea",
},
"1": {
id: 1,
category: "mountain"
}
}
const arrayC = Object.keys(arrayA).reduce((result, key) => ({
...result,
[key]: {
...arrayA[key],
...arrayB[key]
}
}), {})
console.log(arrayC)

最新更新