私はしばらくこれに取り組んできたので、他の誰かがそれにつまずいた場合に備えて、私の問題とその答えを投稿します。
次の配列を期間の降順で並べ替えようとしました。
{
0:
{
first_name: "Tom"
duration: "00:50"
}
1:
{
first_name: "Bob"
duration: "01:30"
}
2:
{
first_name: "Dan"
duration: "< 1 min"
}
}
正しい順序はBob-Tom-Danである必要がありますが、AngularJSフィルターorderByorderBy($scope.students,'duration',true);
を使用する場合は、Dan-Bob-Tomを取得しました。
私がそれを回避する方法は、一意の文字列と実際の数を区別する関数を作成することです。
var orderByExp = function(student) {
if(student.duration.match(/\d\d:\d\d/)) {
return student.duration;
}
else{
return "";
}
}
そして、その関数を式として渡します。
orderBy($scope.students,orderByExp,true);
そうすれば、「xx:xx」以外のものを取得した場合、それは空の文字列として扱われます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加