似たような質問がありますが、私のために何も答えられていないので、これを重複としてマークしないと感謝します。私のテンプレートに パイプ角2:オブジェクトの並べ替え
、私は
<tr class *ngFor="let media of (result) | orderBy: 'data.likes.count'">
<td>
<img src={{media.data.images.standard_resolution.url}} height="100" width="100">
<p> {{media.data.likes.count}} </p>
</td>
</tr>
を「好き」のカウント数に基づいて応答をソートしたいと思います:私は、これらの値で返されたオブジェクト
result:Array<Object>=[];
の配列を持っている
)の問題を解決
ソートパイプは次のようになります。
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({name: 'orderBy', pure: false})
export class SortPipe {
transform(array: Array<Object>, args: string): Array<Object> {
console.log("calling pipe");
if (array == null) {
return null;
}
array.sort((a: any, b: any) => {
if (a[args] < b[args]){
//a is the Object and args is the orderBy condition (data.likes.count in this case)
return -1;
}else if(a[args] > b[args]){
return 1;
}else{
return 0;
}
});
return array;
}
}
私はこのコードを実行すると、それはむしろ、その後同類に基づいて、それを並べ替え、私の順不同の応答を示しています。私は、パイプ上でconsole.log(a[args])
を実行すると、定義されていないので、オブジェクトフィールドの値を正しく読み取っていない可能性があることを指摘しておきます。
応答は次のようになります。 1,10,11,12,13,14,15,16,17,18,19,2など?特定の質問に対する解決策を見つけられなかったからといって、他の回答が間違っているとは限りません。 – zerohero
申し訳ありませんが、それは私が意味するものではありません。私はちょうど私が直面している問題を解決していない可能性があることを意味しました。あなたの質問に答えるために、レスポンスはorderBy pipeの影響を受けません –
それはあなたのためにうまくいかないかもしれない他のものと関連していても、あなたの特定の問題を解決するためのものではありません。しかし、とにかく、私はあまりにも酔って現在気にしています – zerohero