首页 > 解决方案 > 以人工顺序对 JavaScript 数组进行排序

问题描述

我有一个REST查询返回的数组,该数组表示多步骤生产过程中的项目数。

var steps = [
  { name:'Package', value:3},
  { name:'Assemble', value:1 },
  { name:'Ship', value:7},
  { name:'Preprocess', value:9 },
  { name:'Paint', value:5 }
];

我想按流程的顺序对它们进行排序,如下所示:

  1. 预处理
  2. 集合
  3. 包裹

我有其他的字母数字排序,我正在使用下划线,但我无法弄清楚这一点。

标签: javascriptarrayssortingunderscore.js

解决方案


您可以为想要的订单获取一个对象,其中包含该位置的数值。然后按此值排序。

var steps = [{ name: 'Package', value: 3 }, { name: 'Assemble', value: 1 }, { name: 'Ship', value: 7 }, { name: 'Preprocess', value: 9 }, { name: 'Paint', value: 5 }],
    order = { Preprocess: 1, Paint: 2, Assemble: 3, Package: 4, Ship: 5 };
    
steps.sort(({ name: a }, { name: b }) => order[a] - order[b]);

console.log(steps);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读