2017-07-06 24 views
1

這是我的components.ts。 我想寫一個功能,按照計數排序數組,我將使用html中的排序數組數據來創建圖表。使用數組排序數據

import { Component } from '@angular/core'; 
@Component({ 
    selector: 'dashboard', 
    styleUrls: ['./dashboard.scss'], 
    templateUrl: './dashboard.html', 
}) 
export class Dashboard { 
    private data = []; 
    constructor() { 
    this.data = [{ 
     'maxTime': 30041, 
     'minTime': 6453, 
     'avgTime': 18949, 
     'count': 4, 
     'requestRouteTemplate': 'api/GetUserPostponesCountReport', 
     'requestMethod': 'POST', 
    }, 
    ... 
    } 
] 
+0

正如答案的補充。有一個叫做[Lodash](https://lodash.com/)的整潔的庫,我建議。使用lodash你可以簡單地'data = _.sortBy(data,'count');' – indexoutofbounds

回答

1

可以使用sort功能

this.data.sort(function(a,b){ 
    return a.count - b.count; 
}); 

僅供參考 - sort

對於tweaking- plunker

0

實現這在您的dashboard.html文件要顯示的數據順序by count

像這樣:

<tr *ngFor="#friend in friends| orderBy : ['count']""> 
     <td>{{friend.name}}</td> 
     <td>{{friend.phone}}</td> 
     <td>{{friend.count}}</td> 
</tr> 
+0

只是一個想法 - OP希望數據在JS中的函數中排序,因爲圖表需要數據,而'orderBy'可能不可用。 – nikhil

2
this.data.sort(function (a, b) { 
    return a.count - b.count; 
}); 

來源:https://developer.mozilla.org/hu/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

或者僅僅是一個ES6快捷方式:

data.sort((a, b) => a.count - b.count); 

因爲在一個行,你不需要{}也不需要返回,也讓箭頭功能。

+2

或只是一個ES6快捷鍵: data.sort((a,b)=> a.count - b.count); 因爲在一行中你不需要{}也不需要返回並且也允許箭頭函數 – 2017-07-06 13:16:45