Method slice()
mengembalikan sebuah salinan dangkal dari sebagian array menjadi sebuah objek array baru yang dimulai dari start
sampai end
(end
tidak termasuk) dimana start
dan end
merupakan index dari item yang ada di array tersebut. Tidak merubah array asli.
The source for this interactive demo is stored in a GitHub repository. If you'd like to contribute to the interactive demo project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Sintaks
arr.slice([start[, end]])
Parameter
start
Optional- Indeks berbasis nol untuk memulai ekstraksi.
Indeks negatif dapat digunakan, menunjukkan offset dari akhir urutan..slice(-2)
mengekstrak dua elemen terakhir dari urutan.- Jika
start
tidak terdefinisi,slice
memulai dari indeks ke0
. - Jika
start
lebih besar dari indeks urutan, array kosong akan dikembalikan. end
Optional- Indeks berbasis nol untuk mengakhiri ekstraksi.
slice
mengekstrak hingga tapi tidak termasukend
. Sebagai contoh,slice(1,4)
mengekstrak elemen kedua menuju elemen ke-empat (indeks elemen 1, 2, dan 3). -
Indeks negatif bisa digunakan,
menunjukkan offset dari akhir urutan.slice(2,-1)
mengekstrak elemen ketiga menuju elemen kedua-ke-terakhir dalam urutan. - Jika
end
dihillangkan,slice
mengekstrak melalui akhir dari urutan (arr.length
). - Jika
end
lebih besar dari panjang urutan,slice
mengkstrak melalui akhir urutan (arr.length
).
Return value
Array baru berisi elemen yang diekstrak.
Deskripsi
slice
does not alter the original array. It returns a shallow copy of elements from the original array. Elements of the original array are copied into the returned array as follows:
- For object references (and not the actual object),
slice
copies object references into the new array. Both the original and new array refer to the same object. If a referenced object changes, the changes are visible to both the new and original arrays. - For strings, numbers and booleans (not
String
,Number
andBoolean
objects),slice
copies the values into the new array. Changes to the string, number, or boolean in one array do not affect the other array.
If a new element is added to either array, the other array is not affected.
Contoh
Return a portion of an existing array
let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
let citrus = fruits.slice(1, 3)
// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']
Using slice
In the following example, slice
creates a new array, newCar
, from myCar
. Both include a reference to the object myHonda
. When the color of myHonda
is changed to purple, both arrays reflect the change.
// Using slice, create newCar from myCar.
let myHonda = { color: 'red', wheels: 4, engine: { cylinders: 4, size: 2.2 } }
let myCar = [myHonda, 2, 'cherry condition', 'purchased 1997']
let newCar = myCar.slice(0, 2)
// Display the values of myCar, newCar, and the color of myHonda
// referenced from both arrays.
console.log('myCar = ' + JSON.stringify(myCar))
console.log('newCar = ' + JSON.stringify(newCar))
console.log('myCar[0].color = ' + myCar[0].color)
console.log('newCar[0].color = ' + newCar[0].color)
// Change the color of myHonda.
myHonda.color = 'purple'
console.log('The new color of my Honda is ' + myHonda.color)
// Display the color of myHonda referenced from both arrays.
console.log('myCar[0].color = ' + myCar[0].color)
console.log('newCar[0].color = ' + newCar[0].color)
This script writes:
myCar = [{color: 'red', wheels: 4, engine: {cylinders: 4, size: 2.2}}, 2, 'cherry condition', 'purchased 1997'] newCar = [{color: 'red', wheels: 4, engine: {cylinders: 4, size: 2.2}}, 2] myCar[0].color = red newCar[0].color = red The new color of my Honda is purple myCar[0].color = purple newCar[0].color = purple
Array-like objects
slice
method can also be called to convert Array-like objects/collections to a new Array. You just bind
the method to the object. The arguments
inside a function is an example of an 'array-like object'.
function list() {
return Array.prototype.slice.call(arguments)
}
let list1 = list(1, 2, 3) // [1, 2, 3]
Binding can be done with the call()
method of Function.prototype
and it can also be reduced using [].slice.call(arguments)
instead of Array.prototype.slice.call
.
Anyway, it can be simplified using bind
.
let unboundSlice = Array.prototype.slice
let slice = Function.prototype.call.bind(unboundSlice)
function list() {
return slice(arguments)
}
let list1 = list(1, 2, 3) // [1, 2, 3]
Spesifikasi
Kompatibilitas Peramban
BCD tables only load in the browser