【问题标题】:Angular: sort collection by list of valuesAngular:按值列表对集合进行排序
【发布时间】:2015-07-29 09:31:52
【问题描述】:

如何根据特定顺序从其他数组中排序(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"}]

我需要从orderList申请订单到list

C#中的模拟Sort collection by another collection values

【问题讨论】:

    标签: javascript angularjs frontend lodash


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      在本例中,我们将使用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>
      

      【讨论】:

      • 在这种情况下,我会得到经典的订购,但我需要根据orderList订购。
      猜你喜欢
      • 2018-08-11
      • 1970-01-01
      • 2021-01-15
      • 2018-01-13
      • 1970-01-01
      • 2015-10-18
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多