Dengan metode objek Array Anda dapat memodifikasi konten Array namun dibandingkan dengan dasar untuk loop, metode ini tidak memiliki satu fungsi penting. Anda tidak dapat mengubah indeks saat dijalankan.
Misalnya jika Anda akan menghapus elemen saat ini dan menempatkannya ke posisi indeks lain dalam array yang sama Anda dapat dengan mudah melakukan ini. Jika Anda memindahkan elemen saat ini ke posisi sebelumnya tidak ada masalah di iterasi berikutnya Anda akan mendapatkan item berikutnya yang sama seolah-olah Anda tidak melakukan apa-apa.
Pertimbangkan kode ini tempat kami memindahkan item pada posisi indeks 5 ke posisi indeks 2 setelah indeks menghitung hingga 5.
var ar = [0,1,2,3,4,5,6,7,8,9];
ar.forEach((e,i,a) => {
i == 5 && a.splice(2,0,a.splice(i,1)[0])
console.log(i,e);
}); // 0 0 - 1 1 - 2 2 - 3 3 - 4 4 - 5 5 - 6 6 - 7 7 - 8 8 - 9 9
Namun jika kita memindahkan elemen saat ini ke suatu tempat di luar posisi indeks saat ini, segalanya menjadi sedikit berantakan. Maka item berikutnya akan bergeser ke posisi item yang dipindahkan dan dalam iterasi berikutnya kita tidak akan dapat melihat atau mengevaluasinya.
Pertimbangkan kode ini di mana kami memindahkan item di posisi indeks 5 ke posisi indeks 7 setelah indeks menghitung hingga 5.
var a = [0,1,2,3,4,5,6,7,8,9];
a.forEach((e,i,a) => {
i == 5 && a.splice(7,0,a.splice(i,1)[0])
console.log(i,e);
}); // 0 0 - 1 1 - 2 2 - 3 3 - 4 4 - 5 5 - 6 7 - 7 5 - 8 8 - 9 9
Jadi kita belum pernah bertemu 6 di loop. Biasanya dalam for loop Anda diharapkan mengurangi nilai indeks ketika Anda memindahkan item array ke depan sehingga indeks Anda tetap pada posisi yang sama di jalankan berikutnya dan Anda masih dapat mengevaluasi item yang bergeser ke tempat item yang dihapus. Ini tidak mungkin dengan metode array. Anda tidak dapat mengubah indeks. Periksa kode berikut
var a = [0,1,2,3,4,5,6,7,8,9];
a.forEach((e,i,a) => {
i == 5 && (a.splice(7,0,a.splice(i,1)[0]), i--);
console.log(i,e);
}); // 0 0 - 1 1 - 2 2 - 3 3 - 4 4 - 4 5 - 6 7 - 7 5 - 8 8 - 9 9
Seperti yang Anda lihat ketika kita mengurangi i
itu tidak akan melanjutkan dari 5 tetapi 6, dari tempat itu ditinggalkan.
Jadi ingatlah ini.