【问题标题】:Sort array by two properties in angular [duplicate]按角度中的两个属性对数组进行排序[重复]
【发布时间】:2018-02-23 13:37:24
【问题描述】:

如何先按付款排序,然后按角度金额排序?

在c#中,我可以轻松做到array.orderBy(x => x.payment).thenby(x => x.amount)

在 Angular 中有类似的东西吗?我正在探索 Array.Sort() 但没有我需要的东西。

我们还有一个特殊的要求,就是将 payment4 排到最后。

   array = [
    { payment: 'payment1', description:'desc1', place:'place1', amount: 1 },
    { payment: 'payment1', description:'desc1', place:'place2', amount: 10 },
    { payment: 'payment3', description:'desc3', place:'place3', amount: 17 },
    { payment: 'payment4', description:'desc4', place:'place4', amount: 14 },
    { payment: 'payment4', description:'desc4', place:'place4', amount: 51 },
    { payment: 'payment5', description:'desc5', place:'place5', amount: 31 },
    { payment: 'payment1', description:'desc1', place:'place1', amount: 111 },
    { payment: 'payment1', description:'desc1', place:'place2', amount: 71 },
    { payment: 'payment3', description:'desc3', place:'place3', amount: 17 },
    { payment: 'payment4', description:'desc4', place:'place4', amount: 21 },
    { payment: 'payment4', description:'desc4', place:'place4', amount: 18 },
    { payment: 'payment5', description:'desc5', place:'place5', amount: 123 }
    ]

【问题讨论】:

标签: javascript arrays angular sorting


【解决方案1】:

你需要写一个custom sort函数。

array.sort(function (a, b) {
    if(a.payment == b.payment) {
        return (a.amount < b.amount) ? -1 : (a.amount > b.amount) ? 1 : 0;
    } else if (a.payment == 'payment4' && b.payment != 'payment4') {
        return 1; 
    } else if (a.payment != 'payment4' && b.payment == 'payment4') {
        return -1;
    } else {
        return (a.payment < b.payment) ? -1 : 1;
    }
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
  • 2014-12-02
  • 2012-10-06
  • 1970-01-01
  • 2016-11-25
相关资源
最近更新 更多