javascript - Angular : sort collection by list of values

标签 javascript angularjs frontend lodash

如何根据其他数组中的特定顺序对对象集合进行排序(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

最佳答案

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

关于javascript - Angular : sort collection by list of values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696510/

相关文章:

javascript - 尝试获取 document.getElementsByName(name) 时出错

javascript - 使用弹出窗口在 ANGULAR 中添加项目 json

html - 如何在同一行div上插入2张图片和1个文本框

javascript - 如何从不符合 Ember.js 规范的 URL 请求?

javascript - 如何阻止 Safari 用户访问我的网站?

javascript - 鼠标滚轮事件 - 速度/动量

angularjs - 为什么这个 ng-show 指令在模板中不起作用?

angularjs - 如何查询 JSON 对象

parsing - 进一步解析特殊情况下的表达式

javascript - 基于多个 CSS 类和来自多个复选框的输入显示/隐藏 tr 元素