arrayObj.slice( start[, end] )
end-1arrayObj.length+start (т.е. start'ый элемент с конца массива). arrayObj.length+end (т.е. end'ый элемент с конца массива).end < start, то будет создан пустой массив.Данный метод не изменяет исходный массив, а просто возвращает его часть.
var arr = [ 1, 2, 3, 4, 5 ] arr.slice(2) // => [3, 4, 5] arr.slice(1, 4) // => [2, 3, 4] arr.slice(2, 3) // => [3]
arr = [1, 2, 3, 4, 5] arr.slice(-2) // => [4, 5] arr.slice(arr.length - 2) // то же самое arr.slice(-3, -1) // [3, 4] arr.slice(arr.length-3, arr.length-1) // то же самое
| Поиск по сайту |
| Последние темы на форуме |
Forum |
А как будет с многомерными массивами?
Для многомерных массивов нужно использовать схожую функцию - splice()
Можете привести пример, как использовать splice() для многомерных массивов?
Многомерность не учитывается.
start тоже не обязательный параметр. slice без параметров копирует массив
Почему нет ни слова о том, что этот метод практически так же работает и для строк?! Что он вообще там есть
Наверное потому, что у строк — другой метод с таким же названием. А этот метод для массивов.
"Данный метод не изменяет исходный массив" - изменяет!
попробуйте:
var arr = [1,2,3];
arr.splice(1,1)
console.log(arr);
Извините, перепутал методы. Всего одна буква а какая разница в поведении.
slice хороший способ клонировать массив,
Например
следующий код
var a = [{x:1},{x:2},{x:3},{x:4},]; var b = a.slice(1,2); b[0].x=7; alert(JSON.stringify(a))выведет
[{"x":1},{"x":7},{"x":3},{"x":4}]но вот так:
уже
Не надо путать копирование по ссылке и копирование по значению