这是我的json:
{
{
"FirstName": "Adam" ,
"Order": 3
},
{
"FirstName": "Baron" ,
"Order": 1
},
{
"FirstName": "Ashton" ,
"Order": 4
},
{
"FirstName": "Kara" ,
"Order": 2
}
}
我想根据“订单”值来订购。 我的追捕并没有让我有效率。
答案 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需要引用对象属性的参数。前 在这个页面中,你了解到这样的管道必须是不纯的 角度调用几乎在每个变化检测周期中都会产生管道。