javascript - angular.js 使用优先级和对象属性值的 ng-repeat 排序过滤器

标签 javascript json angularjs

考虑一个包含以下数据的 JSON 对象:

{
   "results": [
      { 
         flags: [
            is_special: true // or false, or non-existing
         ],

         type: "typeone" // or typetwo, or non-existing
      },
      ... // repeats
   ]
}

ng-repeat="result in json.results" 创建对结果进行排序的过滤器的有效方法是什么:

  1. 将所有 is_special=true 放在第一位,按 #2 和 #3 排序。
  2. 将所有 typeone 放在 typetwo
  3. 将所有 typetwo 放在所有其余的之前(或不带任何标志/类型)。

重要提示:当其中一些属性不存在或等于 ""

时,一定不能失败

谢谢

最佳答案

我认为这不是最好的方法,但是有一种方法可以使用 Underscore JS 来做到这一点。希望有人可以优化我的代码如下:

// Grab the items that have the flag
first = _.filter(results, function(r)
{
    return r.flags.is_special;
}

// Grab the remainder
remainder = _.where(results, {flags.is_special: false});

// Now grab your second list
second = _.filter(remainder, function(r)
{
    return r.type =='typeone';
});

// Again grab the remainder (and so on)

// Then return your 4 lists

关于javascript - angular.js 使用优先级和对象属性值的 ng-repeat 排序过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024256/

相关文章:

javascript - JQuery-如何使用图像的 ALS 滚动脚本?

javascript - Angular 图不起作用

Javascript:鼠标悬停时间间隔为 2 秒时显示窗口

javascript - 无法创建一个使用 jQuery 使用键和 JSON 数组查找值的函数

json - Helm 为 nginx 模板转换数据

angularjs - 测试使用数据表的 Angular Controller - 模拟 DTOptionsBuilder 和 DT ColumnBuilder

javascript - Angular + Node(Express) + SSL 集成

javascript - leaflet js + gMapCatcher 在缩放 -2 时不渲染图 block

Java REST 响应值缺少拼写字符

angularjs - d3.js - Jasmine 测试调用 svg 元素上的单击