我有一些对象数组:
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中实现此目的。
答案 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)