我需要在一个对象中组合两个数组。
const mainObject = {
user: [{
a: "aaaa",
b: "bbbb"
}, {
c: "cccc",
d: "dddd"
}],
developer: [{
e: "eeee",
f: "ffff"
}]
}
我可以使用mainObject.user.concot(mainObject.developer(很容易地将它们组合在一起
[{
a: "aaaa",
b: "bbbb"
}, {
c: "cccc",
d: "dddd"
},{
e: "eeee",
f: "ffff"
}]
我需要的输出是:
[{
a: "aaaa",
b: "bbbb",
origin: "user"
}, {
c: "cccc",
d: "dddd",
origin: "user"
},{
e: "eeee",
f: "ffff",
origin: "developer"
}]
有多种方法可以做到这一点,其中一种方法是使用map
和concat
const mainObject = {
user: [{
a: "aaaa",
b: "bbbb"
}, {
c: "cccc",
d: "dddd"
}],
developer: [{
e: "eeee",
f: "ffff"
}]
}
const result = mainObject.user.map(item => ({ ...item,
origin: 'user'
})).concat(mainObject.developer.map(item => ({ ...item,
origin: 'developer'
})));
console.log(result);
或另一种方法
const mainObject = {
user: [{
a: "aaaa",
b: "bbbb"
}, {
c: "cccc",
d: "dddd"
}],
developer: [{
e: "eeee",
f: "ffff"
}]
}
const result = Object.entries(mainObject).map(([key, value]) => {
return value.map(item => ({ ...item,
origin: key
}))
}).flat();
console.log(result);
您可以使用reduce
和forEach
来迭代数据并添加原始属性
const mainObject = {
user: [{
a: "aaaa",
b: "bbbb"
}, {
c: "cccc",
d: "dddd"
}],
developer: [{
e: "eeee",
f: "ffff"
}]
}
const result = Object.entries(mainObject)
.reduce((acc, [origin, value]) => {
value.forEach(value2 => {
acc.push({ ...value2,
origin
})
})
return acc
}, [])
console.log(result)