首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript阵列的人工排序

问JavaScript阵列的人工排序
EN

Stack Overflow用户
提问于 2018-10-20 11:50:49
回答 3查看 84关注 0票数 2

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

代码语言:javascript
复制
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. 拼装
  4. 套餐
  5. 船舶

我有其他字母数字类型,我正在使用下划线,但我无法弄清楚这一个。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-20 11:54:57

您可以为想要的顺序获取一个对象,并为该位置设置数值。然后根据这个值进行排序。

​

代码语言:javascript
复制
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);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

​

票数 2
EN

Stack Overflow用户

发布于 2018-10-20 11:57:06

您可以创建一个对象,该对象在排序时提到每个名称的优先级。

​

代码语言:javascript
复制
let priority = {
  Preprocess: 1,
  Paint: 2,
  Assemble: 3,
  Package: 4,
  Ship: 5,
}

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

const result = steps.sort((a,b) => priority[a.name] - priority[b.name]);

console.log(result);

​

票数 0
EN

Stack Overflow用户

发布于 2018-10-20 12:05:03

我只是对每个步骤类型使用一个优先级映射,以便在比较函数中使用它。

​

代码语言:javascript
复制
var steps = [
    { name: 'Package', value: 3 },
    { name: 'Assemble', value: 1 },
    { name: 'Ship', value: 7 },
    { name: 'Preprocess', value: 9 },
    { name: 'Paint', value: 5 }
];
var stepPrecedenceMap = new Map([["Preprocess", 1], ["Paint", 2], ["Assemble", 3], ["Package", 4], ["Ship", 5]])

console.log(
steps.sort((stepA, stepB) => {  
return stepPrecedenceMap.get(stepA.name) - stepPrecedenceMap.get(stepB.name)
}));

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52905346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档