Angular:按值列表对集合进行排序

Angular: sort collection by list of values

如何根据其他数组的特定顺序对对象集合进行排序(Angular,Lodash):

var list = [{name: "Name 10"}, 
            {name: "Name 20"},
            {name: "Name 321"},
            {name: "Name 41"}];

var orderList = ["Name 20", "Name 41", "Name 321", "Name 10"];

//result: {name: "Name 20"}, {name: "Name 41"},{name: "Name 321"},{name: "Name 10"}]

我需要申请从 orderListlist

的订单

C# 中的模拟

对于此示例,我们将使用 ng-repeat 指令呈现好友列表。使用内置的 filterorderBy 过滤器,我们将在客户端过滤和排序好友列表。

 <input ng-model="query" type="text" placeholder="Filter">
 <ul ng-repeat="obj in list | filter:query | orderBy: 'name' ">
      <li>{{friend.name}}</li>
 </ul>

AngularJS 支持按 orderBy 过滤器排序。我们需要将表达式函数传递给相对于其他数组的过滤器。查看以下代码:

HTML:

{{list|orderBy:order}}

Javascript:

$scope.list = [{name: "Name 1"}, 
        {name: "Name 2"},
        {name: "Name 3"},
        {name: "Name 4"}];
$scope.orderList = ["Name 2", "Name 1", "Name 3", "Name 4"];
$scope.order = function(predicate) {
    return $scope.orderList.indexOf(predicate.name);
  };  

为了更好的理解我做了JSFiddle