カスタムパイプ(私はこのパイプを書かなかった)を使用して、角度2の数値で文字列の配列をソートしようとしています。ここにパイプがあります:Angular2 numeric orderBy pipe
import { Pipe, PipeTransform } from "@angular/core";
@Pipe({ name: 'numericalSort' })
export class NumericalSortPipe implements PipeTransform {
transform(array: Array<any>, orderField: string, orderType: boolean): Array<string> {
array.sort((a: any, b: any) => {
let ae = a[ orderField ];
let be = b[ orderField ];
if (ae == undefined && be == undefined) return 0;
if (ae == undefined && be != undefined) return orderType ? 1 : -1;
if (ae != undefined && be == undefined) return orderType ? -1 : 1;
if (ae == be) return 0;
return orderType ? (ae.toString().toLowerCase() > be.toString().toLowerCase() ? -1 : 1) : (be.toString().toLowerCase() > ae.toString().toLowerCase() ? -1 : 1);
});
return array;
}
}
ここにオブジェクトがあります。私は「ラベル」によって数値的に並べ替えることができるようにする必要があります。ここで
{
"id" : "12345678",
"accountId" : "123456789",
"label" : "906",
"fullAddress" : {
"zip" : "12345"
}
}
は、サンプルHTMLです:
<div *ngFor="let place of places | numericalSort: 'label'">
<h3>
{{place.label}}
</h3>
...
</div>
私はデフォルトのアルファベット順の値でソートすることができています。どのように私は数値で並べ替えることができますか?
サンプル入力配列、orderfieldとordertypeを提供できるといいですね –
配列が英数字で、数字と文字を注文したいですか? – Vega
私は、サンプルオブジェクトとHTMLでポストを更新しました。 – bk819284