【问题标题】:how sort array with object by property use ngFor如何使用 ngFor 按属性对具有对象的数组进行排序
【发布时间】:2019-10-01 05:06:05
【问题描述】:

我需要在表格中显示排序数据

js

let array = [
{idx: number, name: string, btn: number, index: number},
{idx: number, name: string, btn: number, index: number},
{idx: number, name: string, btn: number, index: number}
]

html

<tr *ngFor="let ticket of array">
<td>{{ticket.name}}</td>
<td>{{ticket.btn}}</td>
<td>{{ticket.index}}</td>
<tr>

我需要按索引值排序显示

【问题讨论】:

标签: javascript angular sorting ngfor


【解决方案1】:
let array = [
  { idx: 1, name: 'a', btn: 1, index: 2 },
  { idx: 2, name: 'b', btn: 2, index: 3 },
  { idx: 3, name: 'c', btn: 3, index: 1 }
];

// descending
let newarr = array.sort((a, b) => b.index - a.index);

//ascending
let newarr = array.sort((a, b) => a.index - b.index);

console.log(newarr);

【讨论】:

    【解决方案2】:

    您可以只使用排序数组:

    function sortFunc(a, b) {
      if ( a.index < b.index ){
        return -1;
      }
      if ( a.index > b.index ){
        return 1;
      }
      return 0;
    }
    
    let array = [
      {idx: number, name: string, btn: number, index: number},
      {idx: number, name: string, btn: number, index: number},
      {idx: number, name: string, btn: number, index: number}
    ].sort(sortFunc);
    

    或者你可以使用 lodash orderBy https://lodash.com/docs/4.17.11#orderBy

    【讨论】:

      【解决方案3】:

      这里有 OrderBy 管道库可用。
      https://github.com/VadimDez/ngx-order-pipe

       npm install ngx-order-pipe --save
      

      【讨论】:

        【解决方案4】:

        您应该在视图中显示之前使用管道对数据进行排序:

        <tr *ngFor="let ticket of array|sort-pipe">
           <td>{{ticket.name}}</td>
           <td>{{ticket.btn}}</td>
           <td>{{ticket.index}}</td>
        <tr>
        

        在排序管道中,您可以使用:

         array.sort(function(obj1, obj2) {
           return obj1.idx > obj2.idx;
        });
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        • 1970-01-01
        • 2011-09-06
        • 2012-02-20
        • 2010-11-02
        相关资源
        最近更新 更多