Сортировать массив объектов в Angular2

Запустите файл PHP, который содержит загрузку CSV, используя:

<a onclick="popoutWin(\'csvexport.php\')" >Download CSV File</a>

или

<input name="newThread" type="button" value="Download CSV File"
        onclick="popoutWin(\'csvexport.php\')" />

, где функция JavaScript popoutWin -

/*
 * Popout window that self closes for use with downloads
 */
function popoutWin(link){
    var popwin = window.open(link);
    window.setTimeout(function(){
        popwin.close();
    }, 500);
}

Это откроет окно, чтобы отобразить приглашение загрузки CSV, а затем сразу же закрыть окно, оставив только приглашение.

23
задан 12 December 2016 в 15:27
поделиться

3 ответа

Попробуйте

Сортировать от А до конца алфавита:

this.suppliers.sort((a,b)=>a.SupplierName.localeCompare(b.SupplierName));

Z => A (обратный порядок)

this.suppliers.sort((a,b)=>b.SupplierName.localeCompare(a.SupplierName));
14
ответ дан Rin and Len 12 December 2016 в 15:27
поделиться

Angular по-прежнему советует не использовать трубы для сортировки и фильтрации, как в angularJs.

Это замедлит работу вашего приложения, приведет к проблемам с производительностью. Намного лучше обеспечить сортировку в вашем компоненте, прежде чем передавать его в шаблон.

Причина объяснена на https://angular.io/guide/pipes#no-filter-pipe

Если вы работаете с красивой структурной компоновкой компонентов, вы можете сделать это даже на сеттер:

 @Input()
  set users(users: Array<User>) {
    this.usersResult = (users || []).sort((a: User, b: User) => a.name < b.name ? -1 : 1)
  }
8
ответ дан Bo Vandersteene 12 December 2016 в 15:27
поделиться

это просто, например, если у вас есть этот объект массива:

 cars = ["Dodge", "Fiat", "Audi", "Volvo", "BMW", "Ford"];

и вы хотите, чтобы объект был отсортирован во фронте HTML, используйте:

 <li ng-repeat="x in cars | orderBy">{{x}}</li>

По умолчанию строки отсортированы в алфавитном порядке, а числа отсортированы по номерам.

Если у вас есть этот массив с ключами:

customers = [
{"name" : "Bottom-Dollar Marketse" ,"city" : "Tsawassen"},
{"name" : "Alfreds Futterkiste", "city" : "Berlin"},
{"name" : "Bon app", "city" : "Marseille"},
{"name" : "Cactus Comidas para llevar", "city" : "Buenos Aires"},
{"name" : "Bolido Comidas preparadas", "city" : "Madrid"},
{"name" : "Around the Horn", "city" : "London"},
{"name" : "B's Beverages", "city" : "London"}
];

Использование:

Сортировать массив по «городскому» порядку DESC:

<li ng-repeat="x in customers | orderBy : '-city'">{{x.name + ", " + x.city}}</li>

Сортировать массив по "городу":

<li ng-repeat="x in customers | orderBy : 'city'">{{x.name + ", " + x.city}}</li>
-1
ответ дан Andres Pirona 12 December 2016 в 15:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: