Array menyediakan begitu banyak metode. Untuk mempermudah, dalam bab ini metode-metode tersebut dibagi menjadi beberapa kelompok.
Menambahkan/menghapus item
Kita sudah tahu metode-metode yang menambahkan dan menghapus item dari bagian awal atau akhir array:
arr.push(...items)– menambahkan item ke bagian akhir,arr.pop()– mengekstrak sebuah item dari bagian akhir,arr.shift()– mengekstrak sebuah item dari bagian awal,arr.unshift(...items)– menambahkan item ke bagian awal.
Berikut ini ada beberapa metode lainnya.
splice
Bagaimana cara untuk menghapus sebuah elemen dari array?
Array merupakan objek, jadi kita bisa coba menggunakan delete:
let arr = ["I", "go", "home"];
delete arr[1]; // menghapus "go"
alert( arr[1] ); // undefined
// kini arr = ["I", , "home"];
alert( arr.length ); // 3
Elemen tersebut telah dihapus, tetapi array itu masih memiliki 3 elemen, kita bisa melihat bahwa arr.length == 3.
Hal itu alami, karena delete obj.key menghilangkan sebuah nilai berdasarkan key. Itulah yang dilakukannya. Tidak masalah bagi objek. Tapi untuk array kita biasanya ingin elemen yang tersisa untuk bergeser dan mengisi ruang yang dikosongkan tadi. Kita ingin memiliki sebuah array yang lebih pendek sekarang.
Jadi, metode khusus harus digunakan.
Metode arr.splice(start) adalahs sebuah fungsi serbaguna untuk array. Splice bisa melakukan banyak hal: memasukkan, menghilangkan serta mengganti elemen.
Sintaksnya yakni:
arr.splice(start[, deleteCount, elem1, ..., elemN])
Dimulai dari posisi index: menghapus elemen deleteCount dan kemudian memasukkan elem1, ..., elemN di tempatnya masing-masing. Mengembalikan array yang tersusun atas elemen yang dihapus.
Metode ini mudah untuk dipahami melalui contoh.
Mari mulai dengan penghapusan:
let arr = ["I", "study", "JavaScript"];
arr.splice(1, 1); // dari indeks 1 menghapus 1 elemen
alert( arr ); // ["I", "JavaScript"]
Mudah, kan? Mulai dari indeks 1 metode ini menghilangkan elemen di indeks 1.
Dalam contoh selanjutnya kita menghilangkan 3 element dan menggantinya dengan 2 elemen lain:
let arr = ["I", "study", "JavaScript", "right", "now"];
// menghilangkan 3 elemen pertama dan menggantinya dengan yang lain
arr.splice(0, 3, "Let's", "dance");
alert( arr ) // sekarang ["Let's", "dance", "right", "now"]
Di sini kita dapat melihat bahwa splice mengembalikan array yang berisi elemen terhapus:
let arr = ["I", "study", "JavaScript", "right", "now"];
// menghilangkan 2 elemen pertama
let removed = arr.splice(0, 2);
alert( removed ); // "I", "study" <-- array yang berisi elemen-elemen yang dihapus
Metode splice juga mampu memasukkan elemen tanpa menghilangkan elemen apapun yang ada sebelumnya. Untuk itu kita perlu mengatur deleteCount menjadi 0:
let arr = ["I", "study", "JavaScript"];
// dari indeks 2
// menghapus 0
// kemudian masukkan "complex" dan "language"
arr.splice(2, 0, "complex", "language");
alert( arr ); // "I", "study", "complex", "language", "JavaScript"
Di sini dan di metode array lainnya, indeks (berangka) negatif diperbolehkan. Indeks-indeks tersebut menspesifikasikan posisi dari bagian akhir sebuah array, seperti ini:
let arr = [1, 2, 5];
// dari indeks -1 (satu langkah dari bagian akhir)
// menghaous 0 element,
// lalu memasukka 3 dan 4
arr.splice(-1, 0, 3, 4);
alert( arr ); // 1,2,3,4,5
slice
Metode arr.slice lebih sederhana daripada metode serupa sebelumnya yakni arr.splice.
Sintaksnya adalah:
arr.slice([start], [end])
Metode ini mengembalikan sebuah sebuah array baru hasil salinan semua item yang ada dari indeks start hingga end (indeks end tidak termasuk). Baik start maupun end bisa saja negatif, dalam kasus tersebut posisi dari bagian akhir array sudah diasumsikan/diperkirakan.
Mirip dengan metode string str.slice, namun membuat subarray bukan substring.
Contohnya:
let arr = ["t", "e", "s", "t"];
alert( arr.slice(1, 3) ); // e,s (disalin dari 1 sampai 3)
alert( arr.slice(-2) ); // s,t (disalin dari -2 sampai bagian akhir)
Kita juga bisa memanggil metode tersebut tanpa argumen: arr.slice() membuat sebuah salinan dari arr. Cara demikian seringkali digunakan untuk mendapatkan sebuah salinan untuk transformasi yang lebih jauh tanpa mempengaruhi array yang asli.
concat
Metode arr.concat membuat sebuah array baru yang sudah termasuk nilai-nilai dari array lainnya serta item-item tambahan.
Sintaksnya sebagai berikut:
arr.concat(arg1, arg2...)
Sintaks tersebut menerima berapapun argumen – bisa jadi array atau nilai.
Hasilnya adalah sebuah array yang berisi item dari arr, kemudian arg1, arg2 dan sebagainya.
Jika sebuah argumen argN adalah sebuah array, makan semua elemennya akan disalin. Jika tidak, argumen itu sendiri yang akan disalin.
Sebagai contoh:
let arr = [1, 2];
// membuat sebuah array dari: arr dan [3,4]
alert( arr.concat([3, 4]) ); // 1,2,3,4
// membuat sebuah array dari: arr dan [3,4] dan [5,6]
alert( arr.concat([3, 4], [5, 6]) ); // 1,2,3,4,5,6
// membuat sebuah array dari: arr dan [3,4], lalu menambahkan nilai 5 dan 6
alert( arr.concat([3, 4], 5, 6) ); // 1,2,3,4,5,6
Normalnya, metode ini hanya menyalin elemen-elemen dari array. Objek lainnya, bahkan jika objek-objek tersebut terlihat seperti array, akan ditambahkan secara keseluruhan:
let arr = [1, 2];
let arrayLike = {
0: "something",
length: 1
};
alert( arr.concat(arrayLike) ); // 1,2,[oobjek Object]
…Tetapi jika sebuah objek mirip array memiliki sebuah properti khusus Symbol.isConcatSpreadable, maka objek tersebut diperlakukan sebagai sebuah array dengan concat: elemennya ditambahkan:
let arr = [1, 2];
let arrayLike = {
0: "something",
1: "else",
[Symbol.isConcatSpreadable]: true,
length: 2
};
alert( arr.concat(arrayLike) ); // 1,2,something,else
Iterate: forEach
Metode arr.forEach membuat kita dapat menjalankan sebuah fungsi untuk setiap elemen yang ada di dalam array.
Sintaksnya:
arr.forEach(function(item, index, array) {
// ... do something with item
});
Sebagai contoh, kode berikut ini menampilkan tiap elemen dalam array: