質問

私を許してください、しかし私はJSの基本と基本関数を書き込む/呼び出す方法を知っていますが、この場合、私はDBのカテゴリのアルファソートリストを私のセット(非アルファ)注文と一致させるために一致させようとしています以下に指定されたカテゴリの(これは、返されるカテゴリの順序をマップする方法について尋ねた質問で、別のユーザーが使用するために提案されたコードです)。ただし、その人のコード回答を自分のコードに統合する方法を理解することはできません。

別のサンプルリストに対して実装されているのを見ただけで(DBから取得するものを模倣するために)欲しいのは大いに役立つでしょう。明らかであることが判明した場合は申し訳ありません。私はこれらの問題に遭遇したときに私ができることを学ぼうとしています。ありがとう!

var categories = [ 'F', 'C', 'A1', 'A2', 'A3' ].map(function (category) {
    return businesses.filter(function (business) {
        return business.category === category;
    });
});
役に立ちましたか?

解決

指定されたコードは、jquery javascriptライブラリを使用している可能性が最も高いようです。 map() アレイを操作するため。

コードは、jQueryオブジェクト /配列があると想定しています。 businesses 注文する必要があるビジネスが含まれています。外から読んだら

  1. 配列内の各アイテムをマップ関数に順番に渡します。マップ関数は、各アイテムのマッピング方法を示す関数を取ります。
  2. 匿名関数 function (category)... 1つの引数を受け入れます。特定のアイテムは、この反復でそれに渡され、マッピング結果を返します。
  3. 返された結果は、フィルターを呼び出す関数です businesses そして、ビジネスをどのようにフィルタリングすべきかを示す機能を渡します。
  4. 匿名関数 function (business)... 議論を受け入れ、特定のアイテムはそれに渡されました businesses 反復され、外側関数でスコープされたカテゴリ引数に一致するものを返します。
  5. 最終結果は、カテゴリアレイによって注文されたアイテムの配列です [ 'F', 'C', 'A1', 'A2', 'A3' ]

に戻ると 元の問題, 、クライアントの好みに基づいてカテゴリのリストを注文する必要があります。注文をマッピングするために文字通りのオブジェクトを作成しましょう

var map = {
    F : 5,
    C : 3,
    A1 : 1,
    A2 : 4,
    A3 : 2
}

このマップを使用して、 sort 方法

var array = ['F', 'C', 'A1', 'A2', 'A3'];

array.sort(function(a,b) {
    return map[a] - map[b];
});

これは私たちを返します ["A1", "A3", "C", "A2", "F"]

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top