JS新特性,`对象数组`分组来了

34 阅读1分钟

在以前,对象数组分组要么手写遍历,要么引入Lodash的_.groupBy,现在有js方法可以原生支持了!!!

Object.groupBy 与 Map.groupBy(正式标准化)

// 基础用法:数组分组为对象
const products = [
  { name: 'T恤', category: '服饰', price: 99 },
  { name: '球鞋', category: '服饰', price: 599 },
  { name: '耳机', category: '数码', price: 1299 }
];

// 按分类分组
const groupedByCategory = Object.groupBy(products, item => item.category);
console.log(groupedByCategory);
// {
//   服饰: [{ name: 'T恤', ... }, { name: '球鞋', ... }],
//   数码: [{ name: '耳机', ... }]
// }

// Map.groupBy:分组为 Map(支持非字符串键)
const groupedByPriceLevel = Map.groupBy(products, item => {
  return item.price > 500 ? '高端' : '平价';
});
console.log(groupedByPriceLevel.get('高端')); // [{ name: '球鞋' }, { name: '耳机' }]

优势

  • 原生实现,无需引入第三方库;
  • Map 版本支持 Symbol、对象等非字符串键,灵活性更高;
  • 类型安全(TS 友好),返回值类型自动推导。

方便又好用,可以一试!!!