我有这个带有一些对象的数组,
var arr = [
{type: "motorbike", model: "ducati monster 797", quantity: 2},
{type: "car", model: "audi", quantity: 4},
{type: "truck", model: "ford", quantity: 1},
{type: "car", model: "bmw", quantity: 1},
{type: "bicycle", model: "giant", quantity: 3},
{type: "truck", model: "MAN", quantity: 1},
{type: "car", model: "dodge 2012", quantity: 3}
]
我如何通过每个对象的“类型”属性对对象进行分组以获得这种格式:
var arr2 = [
{
type: 'motorbike',
data: [{model: "ducati monster 797", quantity: 2}]
},
{
type: 'car',
data: [
{model: "audi", quantity: 4},
{model: "bmw", quantity: 1},
{model: 'dodge 2012', quantity: 3},
]
},
{
type: 'truck',
data: [
{model: "ford", quantity: 1},
{model: "MAN", quantity: 1}
]
}
];
您可以使用.reduce()
,.map()
并Object.entries()
获得所需的输出:
const data = [
{type: "motorbike", model: "ducati monster 797", quantity: 2},
{type: "car", model: "audi", quantity: 4},
{type: "truck", model: "ford", quantity: 1},
{type: "car", model: "bmw", quantity: 1},
{type: "bicycle", model: "giant", quantity: 3},
{type: "truck", model: "MAN", quantity: 1},
{type: "car", model: "dodge 2012", quantity: 3}
];
const result = Object.entries(data.reduce((r, {type, ...rest}) => {
r[type] = r[type] || [];
r[type].push(rest);
return r;
}, {})).map(([type, data]) => ({type, data}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句