Javascript 将元素放在排序列表的最后
我使用排序功能根据单据状态对项目进行排序。 一切都很好,只有一种情况,当doc\u requirement=0时,我希望它是项目的最后一个元素,而不管它的doc\u状态如何Javascript 将元素放在排序列表的最后,javascript,Javascript,我使用排序功能根据单据状态对项目进行排序。 一切都很好,只有一种情况,当doc\u requirement=0时,我希望它是项目的最后一个元素,而不管它的doc\u状态如何 var lockStatus = 2; var items = [ { doc_requirement :4, doc_status :0 }, { doc_requirement: 3,doc_status:1 }, { doc_requirement:0,doc_status :2}, {doc_requ
var lockStatus = 2;
var items = [
{ doc_requirement :4, doc_status :0 },
{ doc_requirement: 3,doc_status:1 },
{ doc_requirement:0,doc_status :2},
{doc_requirement: 3 ,doc_status :3},
{ doc_requirement: 1,doc_status : 0},
];
if(lockStatus == 2){
var finalSortedDocuments = items.sort(function(firstDoc,secondDoc){
var order = [2,0,1,3];
if(firstDoc.doc_status == secondDoc.doc_status && firstDoc.doc_status ==0){
var orderNew = [ 1,4];
return orderNew.indexOf(firstDoc.doc_requirement) - orderNew.indexOf(secondDoc.doc_requirement);
}
return order.indexOf(firstDoc.doc_status) - order.indexOf(secondDoc.doc_status);
});
}
试试这样的-
items.sort(function(doc1,doc2){
if(doc1.doc_requirement=== 0){
return 1;
}
if(doc2.doc_requirement=== 0){
return -1;
}
return doc1.doc_status > doc2.doc_status;
})
您只需向排序函数添加一个以上条件:
items.sort(function(firstDoc, secondDoc) {
if(firstDoc.doc_requirement == 0 && secondDoc.doc_requirement != 0) return 1;
else if(firstDoc.doc_requirement != 0 && secondDoc.doc_requirement == 0) return -1;
// Then sort by doc_status
var order = [2,0,1,3];
return (order.indexOf(firstDoc.doc_status) - order.indexOf(secondDoc.doc_status));
});
你可以这样试试
var finalSortedDocuments = items.sort(function(firstDoc,secondDoc){
if(firstDoc.doc_status== 0){
return(1);
}
if(secondDoc.doc_status== 0){
return(-1);
}
return firstDoc.doc_status-secondDoc.doc_status;
});
最后不放置doc\u requirement=0个元素@krrish@AryanKanwar现在应该将其放在最后,而不是第一位。不将doc_requirement=0元素放在最后@Tuyen