javascript - 如何根据属性值从单个对象数组创建多个对象数组

如果我有像这样的对象数组,我想按属性值对它进行分组

    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/

相关文章:

r - 取消列出嵌套列表的倒数第二个列表

javascript - Prop 验证中缺少 react / Prop 类型

c++ - 为什么 deques 默认用作堆栈的底层容器,而 vectors 可以做到这一点?

reactjs - webpack-cli : Invalid options object. De

python - 给定一个数字,找到到达它的序列

typescript - 我可以根据参数更改返回类型吗

html - 如何使用 html + Tailwind CSS 使表格可滚动

vue.js - Vitest 与 Quasar 的集成

c++ - 没有非空函数的返回语句是否是未定义的行为,其中控制永远不会结束?

javascript - 我将如何在 P5.js 的 Canvas 上的两个位置之间创建点?