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

如何按自定义序列对分组数据的categoryName及内部group排序?

解决方案

1. 定义排序规则映射

先把预期的排序顺序转换成键值对映射,方便快速获取排序优先级:

// 分类排序规则:key为categoryName,value为排序权重
const categoryOrderMap = {
  'Personalisation': 1,
  'Notifications': 2,
  'Orders': 3
};

// Orders分类下的group排序规则
const ordersGroupOrderMap = {
  'Group A': 1,
  'Group b': 2,
  'Group c': 3
};

2. 用Lodash完成双层排序

先对外层分类按规则排序,再单独处理Orders分类下的group顺序:

// 假设原始数据存储在originalData变量中
const originalData = [/* 你的原始JSON数组 */];

// 第一步:按预期顺序排序分类
const sortedCategories = _.orderBy(originalData, [item => categoryOrderMap[item.categoryName]], ['asc']);

// 第二步:处理Orders分类下的group排序
const finalData = _.map(sortedCategories, category => {
  if (category.categoryName === 'Orders') {
    return {
      ...category,
      groups: _.orderBy(category.groups, [group => ordersGroupOrderMap[group.name]], ['asc'])
    };
  }
  return category;
});

3. 逻辑说明

  • 用映射表定义排序规则,后续调整顺序只需修改映射表,无需改动核心排序逻辑
  • _.orderBy支持通过自定义函数返回的权重值排序,完美匹配自定义排序需求
  • 仅针对Orders分类做group排序,不影响其他分类的原有结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:14:49