我有一个对象数组,这些对象都共享具有相同名称的密钥,products
...我很难将所有值都放在第一个products
之下,而删除其他两个products
键。我已经尝试过使用unshift()
的各种方法,但还是要弄乱它。重组数组的最有效,最简单的方法是什么。
现在的样子:
[ { products:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ] },
{ products:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ] },
{ products:
[ [Object],
[Object],
[Object],
[Object] ] } ]
应该是什么样子
[ { products: [Object], [Object], etc...
答案 0 :(得分:1)
您所需的输出格式错误,但是从描述中我会得到一个包含产品对象的数组。我认为没有必要再在一个对象中保留连接的数组,而该对象又位于只有一个对象的数组中。
因此,只需使其成为一个数组,然后将其分配给products
变量即可。您可以为此使用flatMap
:
let arr = [
{ products: [{a: 1}, {b: 2}] },
{ products: [{c: 3}, {d: 4}] },
{ products: [{e: 5}, {f: 6}] }
];
let products = arr.flatMap(({products}) => products);
console.log(products);
// If you REALLY need it in an array with one object:
let obese = [{products}];
console.log(obese);
答案 1 :(得分:1)
由于所需的输出无效的JavaScript,我推断出有效的语法:
const ary = [{products: ['a', 'b', 'c']}, {products: ['m', 'n']}, {products: ['x', 'y']}];
const result = {products: ary.reduce((accum, obj) => [...accum, ...obj.products], [])};
console.log(result) // output => {products: ['a', 'b', 'c', 'm', 'n', 'x', 'y']}