JavaScript 按类别给数据分组,可以直接用 Object.groupBy,不必每次都写一段 reduce 来创建分组、判断数组是否存在、再逐个添加元… · @BaiBtw · TwKit
@BaiBtw
JavaScript 按类别给数据分组,可以直接用 Object.groupBy,不必每次都写一段 reduce 来创建分组、判断数组是否存在、再逐个添加元素。 例如库存里的每项都有 type:Object.groupBy(inventory, item => item.type),会把蔬菜、水果、肉类分别放进对应数组。分组依据也可以是计算结果,比如数量不超过 5 的归入 restock,其余归入 ok。 它返回的是一个原型为 null 的对象,分组键是字符串或 Symbol。回调返回其他类型时会转成字符串,所以数字 1 和字符串 "1" 会进入同一组。 需要用对象本身作为分组键时,用 Map.groupBy。比如预先创建 restock 和 sufficient 两个状态对象,再按库存数量返回其中一个。分组后修改状态对象的属性,不影响用原对象取回那一组;另建一个属性相同的对象,却不能当作同一个键。 两种方法都会新建分组容器,但不会深拷贝元素。组里和原数据里的对象仍是同一个,改其中一边的属性,另一边也能看到。
曝光 38 · 评论 1 · 点赞 1 · 书签 0
查看原帖