以特定方式排序而不是升序或降序

时间:2017-04-14 10:38:14

标签: javascript

我正在使用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 } ]

1 个答案:

答案 0 :(得分:3)

你的排序函数应该返回整数,而不是布尔值(来源:Array.prototype.sort())。它应该是这样的:

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;
}

在您的情况下,您可以使用此:

$scope.$on('$ionicView.beforeEnter', function () {
     $scope.viewColor = "positive";
});