【发布时间】:2019-12-20 12:17:12
【问题描述】:
我有一个问题。我有一个带有属性的数组:
let products = [
{
nome_evento: 'Show1',
preco: 100,
quantidade: 1
},
{
nome_evento: 'Show2',
preco: 200,
quantidade: 3
},
{
nome_evento: 'Show3',
preco: 300,
quantidade: 5
}
]
其实是一个 Google dataLayer 的数组。我需要获取此数组中所有对象的所有属性,并将它们全部放入一个唯一对象中,如下所示:
const finalObj = {
{
nome_evento: 'Show1',
preco: 100,
quantidade: 1
},
{
nome_evento: 'Show2',
preco: 200,
quantidade: 3
},
{
nome_evento: 'Show3',
preco: 300,
quantidade: 5
}
}
这是我试图做的,但它一直给我数组中的最后一个对象,我需要它们:
let productData = []
products.forEach(product => {
let item = {}
item['nome_evento'] = product.nome_evento
item['preco'] = product.preco
item['quantidade'] = product.quantidade
productData.push(item)
})
const finalObj = productData.reduce(function(acc, x) {
for (var key in x) acc[key] = x[key];
return acc;
}, {});
console.log(finalObj)
有人可以帮忙吗?
【问题讨论】:
-
您将无法创建像
finalObj这样的对象,因为“子对象”没有密钥。每个子对象都需要分配一个键(即“Show1”、“Show2”等) -
对象中的每个属性都必须有名字,你想要的对象格式无效
-
您的
const finalObj = {...}不是合适的JS 代码。你不能这样做{ {key: value } }。 -
finalObj是不可能完成的。对象条目必须有键。看起来你用对象花括号替换了数组括号......
标签: javascript arrays ecmascript-6 reduce google-datalayer