基于angular2中的某个json值对json数据进行排序

时间:2017-08-09 07:07:48

标签: javascript json

这是我的json:

{
   {
    "FirstName": "Adam" ,
    "Order": 3
   },
   {
    "FirstName": "Baron" ,
    "Order": 1
   },
   {
    "FirstName": "Ashton" ,
    "Order": 4
   },
   {
    "FirstName": "Kara" ,
    "Order": 2
   }
}

我想根据“订单”值来订购。 我的追捕并没有让我有效率。

3 个答案:

答案 0 :(得分:2)

您可以使用竖线 Sorting

*ngFor="let option of options | orderBy:'Order'"

答案 1 :(得分:2)

var people = [
   {
    "FirstName": "Adam" ,
    "Order": 3
   },
   {
    "FirstName": "Baron" ,
    "Order": 1
   },
   {
    "FirstName": "Ashton" ,
    "Order": 4
   },
   {
    "FirstName": "Kara" ,
    "Order": 2
   }
];
function sortJSON(data, key) {
    return data.sort(function (a, b) {
        var x = a[key];
        var y = b[key];
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
}

var people2 = sortJSON(people, 'Order');
console.log("JSON",JSON.stringify(people2));

答案 2 :(得分:1)

您也可以使用Lodash执行此操作:

import * as _ from 'lodash';

_.sortBy(people, p => p.Order);

优势在于它还具有更多功能,非常方便。请注意从中导入的内容,以免使输出包膨胀。

不要使用管道进行分拣。来自Pipes documentation

的摘录
  

附录:没有FilterPipe或OrderByPipe

     

Angular不提供用于过滤或排序列表的管道。   熟悉AngularJS的开发人员将这些知道为filter和orderBy。   Angular没有等价物。

     

这不是疏忽。 Angular不提供这样的管道,因为它们   表现不佳并防止侵略性缩小。过滤器和   orderBy需要引用对象属性的参数。前   在这个页面中,你了解到这样的管道必须是不纯的   角度调用几乎在每个变化检测周期中都会产生管道。