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

JavaScript按None/Low/Medium/High顺序重排嵌套数组

实现思路

  • 先定义目标顺序的权重映射,把每个等级对应到从小到大的数字,数字越小排序越靠前
  • 将原数组拆分为表头和数据行两部分
  • 用权重映射对数据行做升序排序,自动适配缺失项的场景
  • 最后把表头和排序后的数据行拼接成最终数组

完整可运行代码

// 定义排序优先级:数值越小排序越靠前
const levelPriority = {
  'None': 0,
  'Low': 1,
  'Medium': 2,
  'High': 3
};

function sortExposureLevel(exposureLevel) {
  // 拆分表头与数据行
  const [header, ...dataRows] = exposureLevel;
  // 按优先级排序数据行
  const sortedRows = dataRows.sort((rowA, rowB) => {
    // 取每行第一个元素作为等级,获取对应优先级做差实现排序
    return levelPriority[rowA[0]] - levelPriority[rowB[0]];
  });
  // 拼接返回结果
  return [header, ...sortedRows];
}

// 测试示例
const test1 = [["Exposure Level","Number"],["Low",38],["Medium",105]];
console.log(sortExposureLevel(test1)); 
// 输出 [["Exposure Level","Number"],["Low",38],["Medium",105]]

const test2 = [["Exposure Level","Number"],["High",15],["None",156]];
console.log(sortExposureLevel(test2));
// 输出 [["Exposure Level","Number"],["None",156],["High",15]]

const test3 = [["Exposure Level","Number"],["High",15],["Medium",105],["None",156]];
console.log(sortExposureLevel(test3));
// 输出 [["Exposure Level","Number"],["None",156],["Medium",105],["High",15]]

补充说明

如果你的源数据可能出现不在指定等级里的异常值,可以给优先级加兜底值,避免排序出错:

// 异常值默认排到最后
return (levelPriority[rowA[0]] ?? 999) - (levelPriority[rowB[0]] ?? 999);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:06:03