Susun atur JavaScript ()

Kaedah JavaScript Array sort () menyusun item array.

The sort()Cara menyusun unsur-unsur keselesaan dan diberikan dalam menaik tertentu atau turun.

Sintaks sort()kaedahnya adalah:

 arr.sort(compareFunction)

Di sini, arr adalah tatasusunan.

susun () Parameter

The sort()Cara mengambil masa dalam:

  • membandingkanFungsi (pilihan) - Ia digunakan untuk menentukan susunan urutan tersuai.

Nilai pulangan dari jenis ()

  • Mengembalikan array setelah menyusun elemen array di tempatnya (bermaksud bahawa ia mengubah susunan asal dan tidak ada salinan dibuat).

Contoh 1: Menyusun Elemen Array

Apabila membandingkanFungsi tidak lulus,

  • Semua undefinedelemen bukan larik mula-mula ditukar menjadi rentetan.
  • Rentetan ini kemudian dibandingkan dengan menggunakan nilai titik kod UTF-16 mereka.
  • Penyortiran dilakukan mengikut urutan menaik.
  • Semua undefinedelemen disusun hingga akhir array.
 // sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); // returns the sorted array console.log(names.sort()); // modifies the array in place console.log(names); var priceList = (1000, 50, 2, 7, 14); priceList.sort(); // Number is converted to string and sorted console.log(priceList)

Pengeluaran

 ('Adam', 'Ben', 'Danil', 'Fabiano', 'Jeffrey') ('Adam', 'Ben', 'Danil', 'Fabiano', 'Jeffrey') (1000, 14, 2, 50 , 7)

Di sini, kita dapat melihat bahawa susunan nama disusun mengikut urutan rentetan menaik. Contohnya, Adam datang sebelum Danil kerana "A" datang sebelum "D".

Oleh kerana semua elemen yang tidak ditentukan ditukarkan ke rentetan sebelum menyusunnya, Numberjenis data disusun mengikut urutan itu.

Di sini, kita dapat melihat bahawa walaupun 1000 lebih besar daripada 50 secara berangka, ia muncul di awal senarai yang disusun. Ini kerana "1" <"5" .

Contoh 2: Menyusun menggunakan Fungsi Tersuai

Apabila membandingkanFungsi diluluskan,

  • Semua undefinedelemen bukan larik disusun mengikut nilai kembali dari membandingkanFungsi.
  • Semua elemen yang tidak ditentukan disusun hingga akhir array dan membandingkanFungsi tidak diperlukan untuknya.

Anggaplah kita mahu menyusun susunan nama di atas sehingga nama terpanjang muncul terakhir, dan bukannya menyusunnya mengikut abjad. Kita boleh melakukannya dengan cara berikut:

 // custom sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); function len_compare(a, b)( return a.length - b.length; ) // sort according to string length names.sort(len_compare); console.log(names);

Pengeluaran

 ('Ben', 'Adam', 'Danil', 'Jeffrey', 'Fabiano')

Di sini, penyusunan berdasarkan logik a.length - b.length. Ini pada dasarnya bermaksud bahawa item dengan panjang yang lebih pendek akan muncul pada awal Array.

Mari kita fahami terlebih dahulu bagaimana pilihan itu compareFunctionberfungsi.

Mana compareFunction- mana mempunyai sintaks berikut:

 function (a, b)( // sorting logic // return a Number )

The sort()kaedah membandingkan semua nilai array dengan melepaskan dua nilai pada satu masa untuk itu compareFunction. Kedua-dua parameter a dan b masing-masing mewakili kedua-dua nilai ini.

Yang compareFunctionperlu mengembalikan Number. Nilai dikembalikan ini digunakan untuk menyusun elemen dengan cara berikut:

  • Sekiranya nilai dikembalikan <0 , a disusun sebelum b (a datang sebelum b).
  • Sekiranya nilai dikembalikan> 0 , b disusun sebelum a (b muncul sebelum a).
  • Sekiranya dikembalikan nilai == 0 , a dan b tetap tidak berubah antara satu sama lain.

Dalam Contoh 2, kami menyusun susunan menggunakan:

 function len_compare(a, b)( return a.length - b.length; )

Di sini:

  • Sekiranya a.length - b.length <0 , a sebelum sebelumnya b. Contohnya, "Adam" muncul sebelum "Jeffrey" sebagai 4 - 7 <0 .
  • Sekiranya a.length - b.length> 0 , b muncul sebelum a. Contohnya, "Danil" muncul selepas "Ben" sebagai 5 - 3> 0.
  • Sekiranya a.length - b.length == 0 , kedudukan mereka tidak berubah. Sebagai contoh, kedudukan relatif "Jeffrey" dan "Fabiano" tidak berubah kerana 7 - 7 == 0 .

Kita dapat melihat bahawa ini menghasilkan penyenaraian rentetan mengikut panjangnya mengikut urutan menaik.

Contoh 3: Menyusun Nombor Secara Berangka

Oleh kerana semua elemen yang tidak ditentukan ditukar menjadi rentetan sebelum menyusunnya, kita tidak dapat menyusun nombor menggunakan nilai angka mereka secara lalai.

Mari lihat bagaimana kita dapat melaksanakannya menggunakan fungsi khusus.

 // numeric sorting // define array var priceList = (1000, 50, 2, 7, 14); // sort() using function expression // ascending order priceList.sort(function (a, b) ( return a - b; )); // Output: Ascending - 2,7,14,50,1000 console.log("Ascending - " + priceList); // sort() using arrow function expression // descending order priceList.sort((a, b) => b - a); // Output: Descending - 1000,50,14,7,2 console.log("Descending - " + priceList);

Pengeluaran

 Menaik - 2,7,14,50,1000 Menurun - 1000,50,14,7,2

Dalam contoh ini, kami menyusun susunan menggunakan:

 function (a, b) ( return a - b; )

Di sini,

  • Sekiranya a - b <0 , a datang sebelum b. Sebagai contoh, 2 datang sebelum 7 sebagai 2 - 7 <0 .
  • Sekiranya a - b> 0 , b muncul sebelum a. Contohnya, 1000 datang selepas 50 sebagai 1000 - 50> 0.

Kita dapat melihat bahawa ini menghasilkan penyortiran nombor mengikut nilai angka menaiknya.

Begitu juga, kita boleh gunakan b - auntuk menyusunnya mengikut urutan menurun. Perhatikan bahawa kita juga dapat menggunakan ekspresi fungsi anak panah yang ditentukan dalam ES2015.

Kita juga boleh membalikkan (susunan menurun) susunan yang disusun menggunakan reverse()kaedah susunan terbina dalam . Untuk mengetahui lebih lanjut, lawati JavaScript Array reverse ().

Artikel menarik...