我正在尝试从一组两个不同的数组中构造一个对象数组。我对我需要从这里去哪里感到有些困惑。
我正在创建一个唯一的键值,但该对象将进入单独的数组。
const startingArray = [
{
key: "description",
value: "my description"
},
{
key: "description2",
value: "my description2"
},
{
key: "description3",
value: "my description3"
},
]
我的逻辑
const k = mystartingArray.reduce((acc, d, count) => {
const name = Object.value(d)[0]
const title = Object.value(d)[1]
const value = {
[name]: title
}
acc.push(value)
return acc
},[])
我希望数组的外观
const finishedArray = [
{
description: "my description",
description2: "my description2,
description3: "my description3,
}
离我还有多远?
答案 0 :(得分:2)
我认为只需使用基本的 forEach
来解决这个问题会更简单。
let value = {};
startingArray.forEach(obj => {
value[obj.key] = obj.value;
});
const finishedArray = [value];
或者,如果您不想拥有 value
对象:
const finishedArray = [{}];
startingArray.forEach(obj => {
finishedArray[0][obj.key] = obj.value;
});
答案 1 :(得分:1)
const finishedArray = [
startingArray.reduce((a, v) => {a[v.key] = v.value; return a}, {})
]
答案 2 :(得分:1)
完成代码:
const startingArray = [
{
key: "description",
value: "my description"
},
{
key: "description2",
value: "my description2"
},
{
key: "description3",
value: "my description3"
},
];
const k = startingArray.reduce((acc, d, count) => {
return [{
...(acc[0] || {}),
[d.key]: d.value
}]
},[])
console.log(k);
不过,我认为Rocket Hazmat的解决方案比这个更合理。