You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Underscore基于两个键对数据进行分组

按多个字段分组的解决方案

嘿,这个问题我碰到过好多次!你现在只用model作为分组键,所以所有model为sunny的对象都会被归到同一组里。要实现同时基于model和colour两个字段分组,只需要给_.groupBy的回调函数返回一个能唯一标识这两个字段组合的键就可以了,具体有两种常用方法:

方法1:字符串拼接(简单直接)

把model和colour用一个不会出现在字段值里的分隔符拼接成字符串,作为分组键:

var obj = [{ make: "nissan", model: "sunny", colour: "red" }, { make: "nissan", model: "sunny", colour: "red" }, { make: "nissan", model: "sunny", colour: "red1" }];
var result = _.groupBy(obj, p => `${p.model}-${p.colour}`);

方法2:JSON序列化(更安全)

如果担心字段值里可能包含分隔符(比如colour的值是red-blue),字符串拼接就会出问题,这时候可以用JSON.stringify把包含两个字段的对象转成字符串,作为分组键:

var result = _.groupBy(obj, p => JSON.stringify({ model: p.model, colour: p.colour }));

最终结果示例

两种方法都会得到你想要的两个分组,结果结构大概是这样:

{
  "sunny-red": [
    { make: "nissan", model: "sunny", colour: "red" },
    { make: "nissan", model: "sunny", colour: "red" }
  ],
  "sunny-red1": [
    { make: "nissan", model: "sunny", colour: "red1" }
  ]
}

核心思路就是让分组键能唯一代表model+colour的组合,这样Lodash就能准确把相同组合的对象分到一组啦!

内容的提问来源于stack exchange,提问作者Unknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:41:02