我需要组合两个数组。我能找到的大多数关于组合数组的建议都使用concat
.但是我不想添加到数组的末尾,我需要从array1
向array2
中的每个对象添加一个键/值对。
我需要合并这个数组1:
[
"Basket Abandonment",
"Downloads",
"App Version"
]
使用此数组2:
[
{
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"
}
}
]
您可以在
第二个数组中执行一个简单的for-loop
,插入从第一个数组中获取的新title
属性。 但是,如果你想要一个函数,在不修改源的情况下给你一个新数组,那么一种解决方案是创建一个新数组,将第二个数组中的对象的克隆与第一个数组中的字符串映射,如下所示:
const mixed = objects.map((obj, index) => (clone = {...obj}, clone.title = titles[index], clone));
这里有一个将函数与数组一起使用的示例:
const titles = [
"Basket Abandonment",
"Downloads",
"App Version"
];
const 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) => (c = {...m}, c.title = t[i], c));
const mixed = mix(objects, titles);
console.log(mixed);