我有以下对象。
{
itemName: [ 'hard drive', 'fafa' ],
itemValue: [ '383.00', '565' ],
itemQuantity: [ '61626', '65' ],
}
如何将它转到下面的这个对象数组?
{
items: [
{itemName : 'hard drive', itemValue : '383.00', itemQuantity : '61626'},
{itemName : 'fafa', itemValue : '565', itemQuantity : '65'},
]
}
答案 0 :(得分:4)
使用Object.entries()
从对象获取键/值对(条目)。使用Array.reduce()
迭代条目。在reduce中,使用Array.forEach()
迭代values
,并检查当前索引(result
)中结果数组(index
)中是否存在对象,如果不添加一个空的。将当前密钥(key
)和当前密钥(value
)添加到对象。
const data = {
itemName: [ 'hard drive', 'fafa' ],
itemValue: [ '383.00', '565' ],
itemQuantity: [ '61626', '65' ],
};
const result = Object.entries(data)
.reduce((result, [key, values]) => {
values.forEach((value, index) => {
if(!result[index]) result[index] = {};
result[index][key] = value;
});
return result;
}, []);
console.log({ items: result });

答案 1 :(得分:1)
你可以简单地循环它,以获得直接的解决方案:
const object = {
itemName: [ 'hard drive', 'fafa' ],
itemValue: [ '383.00', '565' ],
itemQuantity: [ '61626', '65' ],
};
const items = [];
for (let i = 0; i < object.itemName.length; i += 1) {
items.push({
itemName: object.itemName[i],
itemValue: object.itemValue[i],
itemQuantity: object.itemQuantity[i],
});
}
console.log(items);