ホームページ  >  記事  >  ウェブフロントエンド  >  es6配列のソート方法は何ですか

es6配列のソート方法は何ですか

青灯夜游
青灯夜游オリジナル
2022-04-11 18:04:2312885ブラウズ

es6 配列のソート方法は「sort()」です。 sort() メソッドは、配列の要素を並べ替えるために使用されます。並べ替え順序は、アルファベット順または数値順、および昇順または降順にできます。デフォルトはアルファベット昇順です。このメソッドにはオプションのパラメータがあり、これは関数である必要があります、構文は「array.sort(callback(a,b))」です。

es6配列のソート方法は何ですか

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

sort() メソッドは、配列の要素を並べ替えるために使用されます。

  • 並べ替え順序は、アルファベット順または数値順、および昇順または降順にすることができます。

  • デフォルトの並べ替え順序はアルファベット昇順です。

その中で、sort() メソッドにはオプションのパラメーターがあります。ただし、このパラメータは関数である必要があります。配列の sort() メソッドを呼び出すとき、パラメーターが渡されない場合、配列内の要素はアルファベット順 (文字エンコーディング順) にソートされます。他の条件に従ってソートしたい場合は、パラメーターを渡す必要があります。この関数は 2 つの値を比較し、2 つの値の相対的な順序を表す数値を返します。

構文:

array.sort(callback(a,b))
パラメータ 説明
callback(a,b)

オプション。ソート順を指定します。関数である必要があります。

#戻り値: 配列への参照である配列型。配列は元の配列に基づいてソートされ、コピーは作成されないことに注意してください。

例:

 //sort的基本使用
  let arr = [8, 1, 4, 3, 7, 9]
  let Arr = [21, 55, 29, 105, 45]
  console.log(arr.sort()) //[1, 3, 4, 7, 8, 9]
  console.log(Arr.sort()) // [105, 21, 29, 45, 55]

es6配列のソート方法は何ですか

上記のコードから、sort() メソッドは 0 ~ 9 の配列のみを正しく並べ替えることができることがわかります。 . 100桁を超える配列項目については戻り値が与えられますが、ソート結果ではありません。これは、sort() が数値ではなく ASCLL コードに基づいて内部ソートを実行するためです。したがって、この方法では 2 桁を超える数値については正式な並べ替えさえできません。

ここで重要な点がわかります。sort() は 2 つの仮パラメータを運ぶコールバック (a, b) を受け取ることができます。つまり、a と b はサイズが比較される 2 つの要素であり、戻り値である必要があります。

  • コールバックの戻り値が正の数の場合、b は a の前に配置されます;

  • コールバックの戻り値が次の場合負の数の場合、a は b の前に配置されます。

  • #コールバックの戻り値が 0 の場合、a と b の位置は変更されません。

  • ##sort が実行されるたびに、元の配列内の 2 つのパラメーター a と b の位置が戻り値に基づいて交換されます;

ソート後は混乱するでしょう。上記の説明を読むと、戻り値はどこにあるのかを尋ねる必要があります。パラメータ a b の実際のパラメータは誰ですか?次のコードを理解すれば、これらはすべて子供の遊びです。

 //sort 内部写法
  let Arr = [56, 21, 29, 105, 45]
  Arr.sort(function(a, b) { //callback
      if (a > b) { // a b 分别是Arr中的 56 21
          return 1  //返回正数 ,b排列在a之前
      } else {
          return -1 //返回负数 ,a排列在b之前
      }
  })
  console.log(Arr) //[21, 29, 45, 55, 105]

実行ロジック:

es6配列のソート方法は何ですか

callback(a, b) によって受け取られる 2 つのパラメータは a = > current item, b であることに注意してください。現在の項目の次の項目、現在の項目と次の項目の位置が変わらない場合、b は次の項目のインデックス -1 です。トラバースの終了を判断するための条件は、b パラメータが次の場合に終了することです。たとえば、上記コードの 3 回目 2 回目の実行では、現在の項目のインデックスが 3 の場合、b は次の項目、つまり 4 になります。配列、およびトラバースを続行するための条件が満たされていないため、トラバースは終了します。

戻り値について話しましょう: 上記のコードで書かれた戻り値 1 と -1 は、1 が正の数、-1 が負の数であることを記号的に表現したものです。コードに記述すると、sort は内部的にのみ判断します。戻り値が正の数であっても負の数であっても、式が真であっても 100 を返し、真でない場合には -10000 を返すことが可能です。

略語の説明:

es6配列のソート方法は何ですか

//简写 最终版  
  let Arr = [56, 21, 88, 10, 5, 77]
  Arr.sort((a, b) => a - b) //箭头函数不加大括号指向这个函数的返回值,可以不写return关键字
  console.log(Arr) //[5, 10, 21, 56, 77, 88]

上図からわかるように、コールバック関数の内部処理メソッドは、a - b ではなく、 2 つの数値を比較します。これは、2 つの数値を比較するステップが並べ替えによって実行されるためです。戻り値を指定するだけで済みます。数学的には、大きな数値 - 小数 = 正の数、小数 - 大きな数値 = 負の数

例56 - 21 = 35 が正の数の場合、戻り値は正の数で、正の数は位置の変更を表します;

21 - 88 = 35 が負の数の場合、戻り値は負の数になります数、負の数は位置の変更を表します;

数学で、大きな数 - 小さな数 ≠ 正の数、小さな数 - 大きな数 ≠ 負の数の場合、このように省略することはできません。したがって、sort は相互に減算するのではなく、内部的に相互に比較することは明らかです;

[関連する推奨事項:

JavaScript ビデオ チュートリアル Web フロントエンド ]

以上がes6配列のソート方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。