所以我有一个对象数组,如下所示:
var myArray = [{priority : "low"}, {priority: "critical"}, {priority: "high"}]
我需要以这种方式排序:1)严重,2)高和3)低。
怎么办呢?
答案 0 :(得分:4)
我建议使用一个对象来存储排序顺序。
如果您需要一个默认值进行排序,您可以使用一个值来排序未知优先级以开始或结束。
var sort = ['critical', 'high', 'low'],
defaultValue = Infinity,
sortObj = {},
myArray = [{ priority: "unknown" }, { priority: "low" }, { priority: "critical" }, { priority: "high" }];
sort.forEach(function (a, i) { sortObj[a] = i + 1; });
myArray.sort(function (a, b) {
return (sortObj[a.priority] || defaultValue) - (sortObj[b.priority] || defaultValue);
});
console.log(myArray);
答案 1 :(得分:2)
使用将优先级名称映射到数字的对象,然后根据该值进行排序。
var priorities = {
low: 0,
high: 1,
critical: 2
};
var myArray = [{
priority: "low"
}, {
priority: "critical"
}, {
priority: "high"
}]
myArray.sort(function(a, b) {
return priorities[b.priority] - priorities[a.priority];
});
console.log(myArray);