Array.prototype.slice()
ال slice()
method إرجاع نسخة ضئيلة من جزء من مصفوفة إلى object مصفوفة جديد تم تحديده من start
إلى end
(end
غير مضمنة) بينما start
و end
تمثلان مؤشر العناصر في هذه المصفوفة. لن يتم تعديل المصفوفة الأصلية.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
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.
تركيب الجملة
arr.slice([start[, end]])
المعاملات
start
Optional- مؤشر ذو أساس صفري يبدأ فيه الاستخراج.
- يمكن استخدام مؤشر سلبي يشير إلى إزاحة من نهاية التسلسل.
slice(-2)
يستخرج آخر عنصرين في التسلسل. - إذا كانت
start
غير محددة, تبدأslice
من المؤشر0
. - إذا كانت
start
is أكبر من نطاق فهرس التسلسل ، يتم إرجاع صفيف فارغ. end
Optional- مؤشر ذو أساس صفري قبل أن ينتهي الاستخراج.
slice
مستخرجات إلى ولا تشملend
. على سبيل المثال,slice(1,4)
يستخرج العنصر الثاني من خلال العنصر الرابع (العناصر المفهرسة 1 و 2 و 3). - يمكن استخدام مؤشر سلبي يشير إلى إزاحة من نهاية التسلسل.
slice(2,-1)
يستخرج العنصر الثالث من خلال العنصر الثاني إلى الأخير في التسلسل. - إذا تم حذف
end
,slice
مستخرجات من خلال نهاية التسلسل(arr.length
). - اذا كانت
end
أكبر من طول التسلسل, فإنslice
تستخرج حتى نهاية التسلسل(arr.length
).
القيمة العائدة
مصفوفة جديدة تحتوي على العناصر المستخرجة.
الوصف
slice
لا تغير المصفوفة الأصلية. تقوم بإرجاع نسخة ضئيلة من العناصر من المصفوفة الأصلية. يتم نسخ عناصر الصفيف الأصلي في الصفيف الذي تم إرجاعه كما يلي:
- للreference Object(وليس الobject الفعلي) ،تقوم
slice
بنسخ reference object إلى المصفوفة الجديدة الجديد. يشير كل من المصفوفة الأصلية والجديدة إلى نفس ال object. إذا تغير reference Object ، تكون التغييرات مرئية لكل من المصفوفات الجديدة والأصلية. - للأرقام و الحروف والقيم المنطقية strings, numbers and booleans (not
String
,Number
andBoolean
objects),تقومslice
بنسخ القيم إلى مصفوفة جديدة. لا تؤثر التغييرات على الحرف أو الرقم أو القيمة المنطقية في مصفوفة على المصفوفة الآخرى.
إذا تمت إضافة عنصر جديد إلى أي مصفوفة ، فلن تتأثر المصفوفة الآخرى.
أمثلة
إعادة جزء من من مصفوفة موجودة
let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
let citrus = fruits.slice(1, 3)
// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']
باستخدام slice
في المثال التالي, تقومslice
بإنشاء مصفوفة جديدة newCar
, من myCar
. كلاهما يتضمن إشارة إلى الobject myHonda
. عندما يتغير لون myHonda
إلى الأرجواني, تعكس كلا المصفوفتان التغيير.
// 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 يمكن أيضًا استدعاؤها لتحويل Array-like objects / مجموعات إلى مصفوفة جديدة. انت فقط bind
the method لل object. The arguments
داخل دالة هو مثال على 'array-like object'.
function list() {
return Array.prototype.slice.call(arguments)
}
let list1 = list(1, 2, 3) // [1, 2, 3]
البناء يمكن أن يتم ب call()
method of Function.prototype
ويمكن تقليلها باستخدام [].slice.call(arguments)
بدلا منArray.prototype.slice.call
.
على أي حال يمكن تبسيطها باستخدام 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]
المواصفات
التوافق مع المتصفح
BCD tables only load in the browser