如果我有像这样的对象数组,我想按属性值对它进行分组
const unitsPhotos = [{
fieldname: 'unit_1',
name: 'Photo 1',
size: 324
},
{
fieldname: 'unit_2',
name: 'Photo 11',
size: 321
},
{
fieldname: 'unit_1',
name: 'Photo 41',
size: 541
},
{
fieldname: 'unit_2',
name: 'Photo 14',
size: 123
},
{
fieldname: 'unit_3',
name: 'Photo 144',
size: 1223
}
];
如何基于字段名(或包含这些对象数组的单个数组)创建三个新的独立对象数组,如下所示
const groupedArray = [
[{
fieldname: 'unit_1',
name: 'Photo 1',
size: 324
},
{
fieldname: 'unit_1',
name: 'Photo 132',
size: 325
}],
[{
fieldname: 'unit_2',
name: 'Photo 11',
size: 321
},
{
fieldname: 'unit_2',
name: 'Photo 14',
size: 123
}],
[{
fieldname: 'unit_3',
name: 'Photo 144',
size: 1223
}]];
最佳答案
您可以先将数组唯一化,然后像这样将它们推送到 groupedArray:
const unitsPhotos = [{
fieldname: 'unit_1',
name: 'Photo 1',
size: 324
},
{
fieldname: 'unit_2',
name: 'Photo 11',
size: 321
},
{
fieldname: 'unit_1',
name: 'Photo 41',
size: 541
},
{
fieldname: 'unit_2',
name: 'Photo 14',
size: 123
},
{
fieldname: 'unit_3',
name: 'Photo 144',
size: 1223
}
];
const unitsPhotosArr = unitsPhotos.map(item => item.fieldname)
// you can find uniques with this function
const toFindUniques = arry => arry.filter((item, index) => arry.indexOf(item) === index)
const uniques = toFindUniques(unitsPhotosArr);
const groupedArray = [];
for (const element of uniques) {
const item = unitsPhotos.filter(el => el.fieldname === element);
groupedArray.push(item)
}
https://stackoverflow.com/questions/71473511/