我在这里有一个问题。我有一个带有属性的数组:
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)
有人可以帮忙吗?
答案 0 :(得分:0)
正如已经指出的那样,您要查询的结果不是有效的javascript,因此无法实现。也许您需要的是将每个nome_evento
作为新对象的键?这样您就可以查找result['Show1'].preco === 100
之类的东西。
const data = [ { nome_evento: 'Show1', preco: 100, quantidade: 1 }, { nome_evento: 'Show2', preco: 200, quantidade: 3 }, { nome_evento: 'Show3', preco: 300, quantidade: 5 }]
const result = data
.reduce((acc, { nome_evento, ...rest }) => ({
...acc,
[nome_evento]: rest
}), {})
console.log(result)