Справочник javascript: slice

Форум

Учебник Node.JS скринкаст Стандарт языка

Справочник

Discord чат

 
Статьи Тест знаний Аналоги функций PHP  

slice

Синтаксис

arrayObj.slice( start[, end] )

Аргументы

start
Индекс элемента в массиве, с которого будет начинаться новый массив.
end
Необязательный параметр. Индекс элемента в массиве, на котором новый массив завершится. При этом последним в новом массиве будет элемент с индексом end-1
  • Если start отрицателен, то он будет трактоваться как arrayObj.length+start (т.е. start'ый элемент с конца массива).
  • Если end отрицателен, то он будет трактоваться как 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) // то же самое

Автор: Гость (не зарегистрирован), дата: 12 декабря, 2011 - 21:34

#permalink

А как будет с многомерными массивами?


Автор: Илья Кантор, дата: 29 февраля, 2012 - 13:26

#permalink

Многомерность не учитывается.


Автор: Гость (не зарегистрирован), дата: 14 апреля, 2012 - 12:12

#permalink

start тоже не обязательный параметр. slice без параметров копирует массив


Автор: Гость (не зарегистрирован), дата: 22 августа, 2013 - 05:38

#permalink

Почему нет ни слова о том, что этот метод практически так же работает и для строк?! Что он вообще там есть


Автор: kovalsky (не зарегистрирован), дата: 26 декабря, 2013 - 18:48

#permalink

"Данный метод не изменяет исходный массив" - изменяет!
попробуйте:
var arr = [1,2,3];
arr.splice(1,1)
console.log(arr);


Автор: Ilyas (не зарегистрирован), дата: 28 апреля, 2015 - 13:23

#permalink

slice хороший способ клонировать массив,
Например

var arr1 = [1, 2, 3, 4];
var arr2 = arr1;
var arr3 =arr2.slice(0)

console.assert(arr1 === arr2);
console.assert(arr1 !== arr3);

Автор: FeelUs, дата: 23 февраля, 2016 - 11:14

#permalink

следующий код

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}]

но вот так:

var a = [1,2,3,4];
var b = a.slice(1,2);
b[0]=7;
text(JSON.stringify(a))

уже

[1,2,3,4]

 
Поиск по сайту
Содержание

Дерево всех статей

Последние темы на форуме
Forum