orderByの使用:数値の配列を並べ替えて、文字列値を一番下に配置するにはどうすればよいですか?

ナギブ・イハブ

私はしばらくこれに取り組んできたので、他の誰かがそれにつまずいた場合に備えて、私の問題とその答えを投稿します。

次の配列を期間の降順で並べ替えようとしました。

{
  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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ