Monday, June 18, 2012

sort()

Metode Array.sort() mengurutkan elemen di dalam array, dan bagaimana cara mengurutkannya, anda bisa atur menggunakan fungsi ataupun tidak.

Sintaks:

arrayObj.sort() arrayObj.sort(compareFunction)
  • compareFunction menetapkan bagaimana cara mengurutkan elemen-elemen array tersebut nantinya. Jika parameter compareFunction dihilangkan, array akan diurutkan berdasar lexicographically atau urutan kamus. Jika compareFunction disediakan, elemen-elemen array diurutkan menurut nilai hasil dari fungsi perbandingan.

Metode Array.sort() adalah metode standard JavaScript 1.1+, JScript 3.0+, ECMAScript 1.0+ dan di dukung Google Chrome Beta+, Firefox 1.0 (Gecko 1.7)+, Internet Explorer 4.0+, Netscape Navigator 3.0+, Opera 4.0+, Safari 1.0+.

Contoh di bawah ini mengurutkan tanpa menggunakan fungsi:

var arrayToSort = new Array("Cabbage", "Lemon", "Apple", "Pear", "Banana"); document.write(arrayToSort.sort()); // Apple,Banana,Cabbage,Lemon,Pear

Jika ingin membalikkan urutan keluaran di atas, anda bisa gunakan metode Array.reverse().

Jika mencoba mengurutkan elemen array bertipe numerik dan tanpa melibatkan fungsi, maka hasil yang diharapkan tidak akan terwujud:

var numArr = new Array(55, 333, 9, 3, 0, 10000, 11, 77, 978, 458); document.write(numArr.sort()); // 0,10000,11,3,333,458,55,77,9,978

Dan bukannya seperti yang diharapkan, misalnya:

0,3,9,11,55,77,333,458,978,10000

Solusinya harus melibatkan fungsi untuk mengurutkannya. Berikut fungsi (lihat yang diberi warna kuning) yang bisa digunakan untuk mengurutkan angka dari terkecil ke terbesar secara urut:

function compareFunction(a, b) { return a - b; } var numArr = new Array(0,10000,11,3,333,458,55,77,9,978); document.write(numArr.sort(compareFunction)); // 0,3,9,11,55,77,333,458,978,10000

Berikut fungsi (lihat yang diberi warna kuning) yang bisa digunakan untuk mengurutkan angka dari terbesar keterkecil secara urut:

function compareFunction(a, b) { return b - a; } var numArr = new Array(0,10000,11,3,333,458,55,77,9,978); document.write(numArr.sort(compareFunction)); // 10000,978,458,333,77,55,11,9,3,0

Fungsi berikut bisa digunakan untuk mengurutkan elemen berdasar karakter yang dimiliki:

function compareFunction(a, b) { var a = a.toString(); var b = b.toString(); if (a.length > b.length) { return 1; }else if (a.length < b.length) { return -1; }else{ return 0; } }

Atau

function compareFunction(a, b) { var a = a.toString(); var b = b.toString(); if (a.length > b.length) { return -1; }else if (a.length < b.length) { return 1; }else{ return 0; } }