JavaScript - 比較関数に関する質問
为情所困
为情所困 2017-07-05 11:06:44
0
4
872
リーリー
为情所困
为情所困

全員に返信(4)
过去多啦不再A梦

これは、特定のデータ構造を比較するために作られたツール機能です。たとえば、データ構造の形式は次のとおりです:

リーリー

現時点では、一般的な sort メソッドは次の形式で記述する必要があります:

リーリー

このコードの問題点:

  1. valueパラメータはハードコーディングされているため、他のフィールドを並べ替えるときに再コーディングする必要があります。

  2. 1 / -1 を返すロジックは冗長で退屈です。

  3. ソート用の匿名関数を直接記述することは、Little Red Book の時代には十分に読みにくくなりました (現在ではアロー関数があるため、実際には大きな問題ではありません)。

つまり、上記のケースでは、レッドブックの著者は、[特定のフィールドを並べ替えるための] 関数を生成するための一般的なツール関数を設計しました。このユーティリティ関数を呼び出すと、返されるのはソートされた結果 (いわゆる高階関数) ではなく、新しい関数であることに注意してください。

このパッケージを適用した後のコードは次のようになります:

リーリー

これはビジネス ロジックを簡素化する役割を果たします。

いいねを押す +0
淡淡烟草味

理解できないのは、2 つのオブジェクトの特定の属性のサイズを比較すると -1 が返されるということです
createComparisonFunction("test")({'test': 1}, {"test": 2})

いいねを押す +0
巴扎黑

関数を呼び出すときは、2 つのステップで見てください。まず、createComparisonFunction()传入比较的字段。在createComparisonFunction()函数内,返回一个匿名函数。同时由于匿名函数处在createComparisonFunction()内,所以你对createComparisonFunction()传入的参数propertyName对匿名函数也有效存在。
通过上一步,你已经得到的匿名函数包含propertyName,此时你就可以传入你要比较的两个对象,在函数内比较他们的propertyName 属性を通じて比較結果を返します。

いいねを押す +0
我想大声告诉你

これを高階関数といいます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート