Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

Javascriptでの配列要素の並べ替え


JavaScriptには、配列を並べ替えるための非常に強力な組み込み関数があります。デフォルトでは、sortメソッドは要素をアルファベット順にソートします。たとえば、

let arr1 = ["Zebra", "Bear", "Tiger"];
arr1.sort();
console.log(arr1);

出力

これにより、出力が得られます-

[ 'Bear', 'Tiger', 'Zebra' ]

次に、intの例を見てみましょう。

let arr1 = [1, 8, 31, 21];
arr1.sort();
console.log(arr1);

出力

これにより、出力が得られます-

[ 1, 21, 31, 8 ]

これは私たちが期待したものではありません。デフォルトでは、sortメソッドは要素をアルファベット順にソートするため、これは出力されています。希望に応じて並べ替えるには、2つの引数を適用してどちらが大きいか、どちらが小さいかを判断し、それに応じて並べ替える比較関数を提供する必要があります。したがって、整数配列を並べ替えるには、-

を呼び出す必要があります。

let arr1 = [1, 8, 31, 21];
arr1.sort((a, b) => a - b);
console.log(arr1);

出力

これにより、出力&、マイナス;

が得られます
[ 1, 8, 21, 31 ]

これは、オブジェクト配列の並べ替えなど、より複雑な場合に並べ替えに使用するキーを指定するためにも使用できます。たとえば、

let people = [{
   name: "Zoe",
   age: 35
}, {
   name: "Richard",
   age: 21
}, {
   name: "Agnes",
   age: 25
}];
people.sort((a, b) => {
   let nameA = a.name.toUpperCase(); // ignore upper and lowercase
   let nameB = b.name.toUpperCase(); // ignore upper and lowercase
   if (nameA < nameB) {
      return -1;
   }
   if (nameA > nameB) {
      return 1;
   } // names must be equal
   return 0;
}) console.log(people)

出力

これにより、出力が得られます-

[ { name: 'Agnes', age: 25 },
{ name: 'Richard', age: 21 },
{ name: 'Zoe', age: 35 } ]

より複雑なオブジェクトもこの方法で並べ替えることができます。比較関数をどのように構成するかがすべてです。

ご覧のとおり、この関数は配列を所定の位置に並べ替えます。この配列と同じ順序を維持しながら、新しいソートされた配列を返すには、次を使用して最初にコピーを作成し、次にソートを適用します。

出力

arr.slice(0).sort();

  1. Javascriptでのマージソートとクイックソート

    マージソートは、分割統治法に基づくソート手法です。最悪の場合の時間計算量はΟ(n log n)です。ただし、このアルゴリズムは余分なO(n)メモリを必要とするため、スペースの面で追加のコストが発生します。 次に、このアルゴリズムをどのように実装するかを見てみましょう。 mergeSortとmergeの2つの関数を作成します。 マージ −この関数は2つの引数を取ります。これらは、2つの部分配列であり、要素を正しい順序で挿入することにより、1つに連結されます。 マージソート −この関数は、配列の左半分と右半分でmergeSortを再帰的に呼び出し、mergeを使用してこれらの配列部分を結合し

  2. JavaScriptのArray.prototype.sort()。

    JavaScript Array.prototype.sort()メソッドは、配列の並べ替えに使用されます。並べ替えの順序は、アルファベット、数字、昇順、降順のいずれかです。 以下は、Array.prototype.sort()メソッドのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-