我正在使用 javascript 排序方法。我想按 1,4,3,0 的顺序对项目的 doc_requirement 键进行排序 但我得到的顺序是 4,3,1,0 。 如何实现特定的顺序而不是升序或降序排序?
var items = [
{ doc_requirement :4},
{ doc_requirement: 3 },
{ doc_requirement:3 },
{doc_requirement: 0 },
{ doc_requirement: 1 },
{ doc_requirement: 3 }
];
items.sort(function(firstDoc, secondDoc) {
if(firstDoc.doc_requirement < secondDoc.doc_requirement){
return true;
} else if(firstDoc.doc_requirement == secondDoc.doc_requirement){
return true;
} else{
return false;
}
});
预期输出
var items =[ { doc_requirement: 1 },
{ doc_requirement: 4 },
{ doc_requirement: 3 },
{ doc_requirement: 3 },
{ doc_requirement: 3 },
{ doc_requirement: 0 } ]
最佳答案
您的排序函数应返回整数,而不是 bool 值(来源:Array.prototype.sort())。它应该看起来像这样:
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
就你的情况而言,你可以使用这个:
function compare(a, b) {
var order = [1, 4, 3, 0];
var i1 = order.indexOf(a.doc_requirement);
var i2 = order.indexOf(b.doc_requirement);
return i1 - i2;
}
关于javascript - 以特定方式排序,而不是升序或降序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43409881/