根据javaScript中的给定顺序排序

时间:2016-12-06 12:08:15

标签: javascript sorting

我有一些对象数组:

var array = [
    { id: 1, color: red,    value: 1 },
    { id: 2, color: red,    value: 2 },
    { id: 3, color: yellow, value: 3 },
    { id: 4, color: yellow, value: 4 },
    { id: 5, color: green,  value: 4 }
];

我希望按绿色排序顺序 - >黄色 - >红色

array.sort(custmeSort())后的

输出应该是

[
    { id: 5, color: green,  value: 4 },   
    { id: 3, color: yellow, value: 3 },
    { id: 4, color: yellow, value: 4 },
    { id: 1, color: red,    value: 1 },
    { id: 2, color: red,    value: 2 }
]

如何在javascript中实现此目的。

1 个答案:

答案 0 :(得分:5)

您可以使用一个对象设置排序顺序,然后只使用sort()

var array = [
  {id: 1, color: 'red',value: 1},
  {id: 2, color: 'red',value: 2},
  {id: 3, color: 'yellow',value: 3},
  {id: 4, color: 'yellow',value: 4},
  {id: 5, color: 'green',value: 4},
]
var order = {
  green: 1,
  yellow: 2, 
  red: 3
}

var result = array.sort(function(a, b) {
  return order[a.color] - order[b.color];
})

console.log(result)