10 Mei 2010

Menghapus Elemen Ganda Array Actionscript 3.0

Terkadang kita membutuhkan sebuah array yang hanya berisi elemen dengan nilai berbeda padahal bisa jadi elemen array yang kita miliki mempunyai elemen yang sama. Untuk mengatasinya, langkah yang dilakukan penulis adalah:

  1. mengurutkan nilai array mulai dari nilai terkecil hingga terbesar
  2. membuat perulangan dengan dimulai dari elemen kedua pada array sampai dengan elemen terakhir array
  3. menghapus nilai indeks jika nilainya sama dengan nilai indeks sebelumnya.


Langkah 1
Diasumsikan nama array adalah "arr" lebih jelasnya deklarasi sebagai berikut

var arr:Array = new Array(3,7,10,7,3,8,9,9,11,10);


pada deklarasi array tersebut, elemennya tidak berurutan dan ada beberapa elemen array yang ganda. Kemudian lakukan pengurutan

arr.sort();


maka nilai array sekarang menjadi terurut (3,3,7,7,8,9,9,10,10,11).

Langkah 2
Andaikata kita mempunyai array, tetapi tidak tahu berapa banyak panjang/jumlah elemennya maka untuk mengetahui indeks elemen terakhir maka kita harus mengetahui jumlah/panjang elemen dari array menggunakan arr.length().

var indeksAkhir:int = (arr.length())-1;


Indeks array dimulai dari nol. Misalnya sebuah array panjangnya adalah 3 maka indeks array berurutannya adalah 0,1,2. Pada contoh deklarasi array "arr" di atas panjang elemennya adalah 10 dengan indeks:data sebelum dilakukan sorting (Langkah 1) sebagai berikut { 0:3, 1:7, 2:10, 3:7, 4:3, 5:8, 6:9, 7:9, 8:11, 9:10 }
dan setelah disorting sebagai berikut { 0:3, 1:3, 2:7, 3:7, 4:8, 5:9, 6:9, 7:10, 8:10, 9:11 }
Setelah menentukan indeks terakhirnya, kemudian mari kita buat perulangannya.

var i:int;
for ( i = 1; i <= indeksAkhir; i++ ) {
hapusElemen();
}



Langkah 3
Perulangan/looping pada langkah 2 akan memanggil function hapusElemen() untuk menghapus elemen.

function hapusElemen():void {
if ( arr[i] != arr[i-1] ) {
arr.splice( i, 1);
}
}



Jadi semua baris kodingnya kurang lebih seperti berikut:

Array(3,7,10,7,3,8,9,9,11,10);
var indeksAkhir:int = (arr.length())-1;
var i:int;

arr.sort(Array.NUMERIC);
for ( i = 1; i <= indeksAkhir; i++ ) {
hapusElemen();
}

function hapusElemen():void {
if ( arr[i] != arr[i-1] ) {
arr.splice( i, 1);
}
}

Tidak ada komentar:

Posting Komentar

whoever you are... whatever you say... it's ok