以特定方式排序而不是升序或降序
问题描述:
我正在使用javascript排序方法。我想按顺序对项目的doc_requirement项进行排序1,4,3,0 但我得到的顺序是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 } ]
答
你的排序函数应该返回整数,而不是布尔(来源: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;
}
阅读[Array.prototype.sort()](https://developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters)API – Oneiros
你是指1,4,3,0是什么意思?总是1首先,然后是最高的数字或?阐述..! – dotTutorials
排序函数应该返回不是布尔值的数字。 –