Javascript 将元素放在排序列表的最后

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

我使用排序功能根据单据状态对项目进行排序。 一切都很好,只有一种情况,当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_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