我需要组合两个数组。关于组合数组的大多数建议我都可以使用concat
。但我不想添加到数组的末尾,我需要将array1
中的键/值对添加到array2
中的每个对象。
我需要合并这个array1:
[
"Basket Abandonment",
"Downloads",
"App Version"
]
使用这个array2:
[
{
bottom: {
comp : "",
details, : "3.1.39 22nd Jul 2015",
status : "",
title : "Previous Version",
value : "8.7%"
},
top: {
details: "3.1.40 25th August 2015",
status: "",
comp: "",
title: "Latest Version",
value: "86%",
}
},
{
bottom: {
value: "469",
title: "Total Reviews",
status: "neutral",
comp: "same",
details: "2 New This Week"
},
top: {
details: "Version 3.1.40",
status: "neutral",
comp: "same",
title: "Average Rating",
value: "4.0"
}
},
{
bottom: {
value: "469",
title: "Total Reviews",
status: "neutral",
comp: "same",
details: "2 New This Week"
},
top: {
details: "Version 3.1.40",
status: "neutral",
comp: "same",
title: "Average Rating",
value: "4.0"
}
}
]
在一个新的组合数组中,我需要为每个对象添加一个title
的键
使用第一个数组中的值,以便生成的数组如下所示:
[
{
title: "Basket Abandonment",
bottom: {
comp : "",
details, : "3.1.39 22nd Jul 2015",
status : "",
title : "Previous Version",
value : "8.7%"
},
top: {
details: "3.1.40 25th August 2015",
status: "",
comp: "",
title: "Latest Version",
value: "86%",
}
},
{
title: "Downloads",
bottom: {
value: "469",
title: "Total Reviews",
status: "neutral",
comp: "same",
details: "2 New This Week"
},
top: {
details: "Version 3.1.40",
status: "neutral",
comp: "same",
title: "Average Rating",
value: "4.0"
}
},
{
title: "App Version",
bottom: {
value: "469",
title: "Total Reviews",
status: "neutral",
comp: "same",
details: "2 New This Week"
},
top: {
details: "Version 3.1.40",
status: "neutral",
comp: "same",
title: "Average Rating",
value: "4.0"
}
}
]
答案 0 :(得分:1)
您可以在第二个数组中插入一个简单的for-loop
,插入从第一个中获取的新title
属性。但是,如果你想要一个在不修改源代码的情况下为你提供新数组的函数,那么一个解决方案就是在第二个数组中创建一个新数组mapping,并在第一个数组中包含字符串,如下所示:
let mixed = objects.map((obj, index) => (obj.title = titles[index], obj));
这里有一个使用数组函数的示例:
let titles = [
"Basket Abandonment",
"Downloads",
"App Version"
];
let objects = [
{
bottom: {
comp: "",
details : "3.1.39 22nd Jul 2015",
status: "",
title: "Previous Version",
value: "8.7%"
},
top: {
details: "3.1.40 25th August 2015",
status: "",
comp: "",
title: "Latest Version",
value: "86%",
}
},
{
bottom: {
value: "469",
title: "Total Reviews",
status: "neutral",
comp: "same",
details: "2 New This Week"
},
top: {
details: "Version 3.1.40",
status: "neutral",
comp: "same",
title: "Average Rating",
value: "4.0"
}
},
{
bottom: {
value: "469",
title: "Total Reviews",
status: "neutral",
comp: "same",
details: "2 New This Week"
},
top: {
details: "Version 3.1.40",
status: "neutral",
comp: "same",
title: "Average Rating",
value: "4.0"
}
}
];
const mix = (o, t) => o.map((m, i) => (m.title = t[i], m));
let mixed = mix(objects, titles);
console.log(mixed);