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

Илья Кантор, 6 ноя 2008 — 22:18

Синтаксис

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) // то же самое

 
Поиск по сайту
Содержание
  • Введение
  • Основы javascript
  • DOM: работа с HTML-страницей
  • События
  • Объекты, ООП
  • AJAX
  • Особенности регулярных выражений в Javascript
  • Базовые типы: Строки, Числа, Boolean
  • Операторы, их особенности в JS
  • Массивы
  • Функции
  • Замыкания
  • Регулярные выражения
  • Конструкции языка. Обработка ошибок.
  • Редактирование и отладка скриптов
  • Cookie
  • HTTP-Отладка
  • Просмотр живого HTML
  • Разное полезное
  • Drag and drop
  • Грамотное javascript-дерево за 7 шагов
  • Интеграция AJAX в интерфейс
  • Координаты элемента на странице
  • Правильные show/hide/toggle
  • Удобное дерево с AJAX-подгрузкой
  • Введение в Ajax
  • Ajax и Rich Client
  • Ajax и клиент-серверная архитектура.
  • Способы общения с сервером
  • COMET
  • Форматы данных для AJAX
  • Обмен данными для документов с разных доменов
  • Обмен данными между доменами. Часть 2.
  • Google Closure Compiler в деталях
  • Yahoo: лучшие способы ускорения сайта
  • Анализ оптимизации страниц c Yslow
  • Интерфейсы. Прочь от MVC
  • Оптимизация Javascript-кода
  • Польза от documentFragment
  • Сжатие Javascript и CSS
  • Улучшаем сжимаемость Javascript-кода.
  • Умное Кеширование и Версионность в Javascript/CSS
  • Асинхронное программирование
  • Google Gears в деталях
  • Javascript <-> Flash мост
  • Букмарклеты и правила их написания
  • О подборке книг на сайте
  • Почему <a href=»javascript:. ..»> — плохо
  • Способы идентификации в интернете
  • Уровни DOM
  • Что почитать?
  • Шаблонизация с javascript
  • Юнит-тесты уровня браузера на связке Selenium + PHP.
  • Справочники: Javascript/HTML/CSS
  • Система сборки и зависимостей Google Closure Library
  • Хранение данных на клиенте. DOM Storage и его аналоги.
  • 10 лучших функций на JavaScript

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

Array.prototype.slice() — JavaScript

Метод slice() возвращает неглубокую копию части массива в новый объект массива, выбранный из start по end ( end not включено), где начало и конец представляют собой индекс элементов в этом массиве. Исходный массив не будет изменен.

Исходный код этой интерактивной демонстрации хранится в репозитории GitHub. Если вы хотите внести свой вклад в интерактивный демонстрационный проект, клонируйте https://github. com/mdn/interactive-examples и отправьте нам запрос на включение.

Синтаксис

  обр  .slice([  начало  [  конец  ]])
 

Параметры

пуск Дополнительно
Отсчитываемый от нуля индекс, с которого следует начать извлечение.
Можно использовать отрицательный индекс, указывающий смещение от конца последовательности.
slice(-2)
извлекает два последних элемента последовательности.
Если начало не определено, срез начинается с индекса 0 .
Если start больше диапазона индексов последовательности, возвращается пустой массив.
конец Дополнительно
Начинающийся с нуля индекс перед , который завершает извлечение. срез экстракты до конец , но не включая его.
Например, slice(1,4) извлекает элементы со второго по четвертый (элементы с индексами 1, 2 и 3).
Можно использовать отрицательный индекс, указывающий смещение от конца последовательности. slice(2,-1) извлекает элементы от третьего до предпоследнего в последовательности.
Если конец опущен, срез извлекается до конца последовательности ( arr .length ).
Если end больше, чем длина последовательности, срез извлекает до конца последовательности ( обр .длина ).

Возвращаемое значение

Новый массив, содержащий извлеченные элементы.

Описание

срез не изменяет исходный массив. Он возвращает неглубокую копию элементов исходного массива. Элементы исходного массива копируются в возвращаемый массив следующим образом:

  • Для ссылок на объекты (а не для фактического объекта) срез копирует ссылки на объекты в новый массив. И исходный, и новый массив относятся к одному и тому же объекту. Если объект, на который делается ссылка, изменяется, эти изменения видны как в новом, так и в исходном массивах.
  • Для строк, чисел и логических значений (кроме объектов
    String
    , Number и Boolean ) срез копирует значения в новый массив. Изменения строки, числа или логического значения в одном массиве не влияют на другой массив.

Если в любой из массивов добавляется новый элемент, это не влияет на другой массив.

Примеры

Вернуть часть существующего массива

 let fruit = ['Банан', 'Апельсин', 'Лимон', 'Яблоко', 'Манго']
пусть цитрусовые = fruit.slice(1, 3)
// фрукты содержат ['Банан', 'Апельсин', 'Лимон', 'Яблоко', 'Манго']
// цитрус содержит ['Апельсин','Лимон']
 

Использование среза >

В следующем примере срез создает новый массив newCar из myCar .

Оба включают ссылку на объект myHonda . Когда цвет myHonda изменяется на фиолетовый, оба массива отражают изменение.

 // Используя slice, создайте newCar из myCar.
let myHonda = { цвет: красный, колеса: 4, двигатель: { цилиндры: 4, размер: 2,2 } }
пусть myCar = [myHonda, 2, 'вишневое состояние', 'куплено 1997']
пусть newCar = myCar.slice(0, 2)
// Отображение значений myCar, newCar и цвета myHonda
// ссылка из обоих массивов.
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)
// Изменяем цвет myHonda.
myHonda.color = 'фиолетовый'
console.log('Новый цвет моей Хонды - ' + myHonda.color)
// Отображаем цвет myHonda, на который ссылаются оба массива.
console.log('myCar[0].color = ' + myCar[0].color)
console.log('newCar[0].color = ' + newCar[0].color)
 

Этот скрипт пишет:

 myCar = [{цвет: 'красный', количество колес: 4, двигатель: {цилиндров: 4, размер: 2,2}}, 2,
         'вишневое состояние', 'приобретена в 1997 году']
newCar = [{цвет: 'красный', колёса: 4, двигатель: {цилиндры: 4, размер: 2,2}}, 2]
myCar[0]. color = красный
новыйАвтомобиль[0].color = красный
Новый цвет моей Хонды фиолетовый
myCar[0].color = фиолетовый
новыйАвтомобиль[0].color = фиолетовый
 

Массивоподобные объекты

метод slice также может быть вызван для преобразования объектов/коллекций, подобных массиву, в новый массив. Тебе всего привязать метод к объекту. Аргументы внутри функции являются примером «объекта, подобного массиву».

 список функций () {
  вернуть Array.prototype.slice.call(аргументы)
}
пусть список1 = список(1, 2, 3) // [1, 2, 3]
 
Связывание

можно выполнить с помощью метода call() из Function.prototype , а также его можно уменьшить с помощью [].slice.call(arguments) вместо Array.prototype.slice.call .

Во всяком случае, это можно упростить, используя привязать .

 пусть unboundSlice = Array.prototype.slice
пусть slice = Function. prototype.call.bind(unboundSlice)
список функций () {
  вернуть срез(аргументы)
}
пусть список1 = список(1, 2, 3) // [1, 2, 3] 

Технические характеристики

Спецификация
ECMAScript (ECMA-262)
Определение «Array.prototype.slice» в этой спецификации.

Совместимость с браузером

Таблица совместимости на этой странице создана из структурированных данных. Если вы хотите внести свой вклад в данные, посетите https://github.com/mdn/browser-compat-data и отправьте нам запрос на включение.

Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox для Android Opera для Android Safari для iOS Samsung Internet Node. js
Chrome slice 902 1905 5 Полная поддержка 1 Край Полная поддержка 12 Firefox Полная поддержка 1 ИЭ Полная поддержка 4 Опера Полная поддержка 4 Сафари Полная поддержка 1 Веб-просмотр Android Полная поддержка 1 Хром Android Полная поддержка 18 Firefox Android Полная поддержка 4 Opera Android Полная поддержка 10. 1 Сафари iOS Полная поддержка 1 Самсунг Интернет Android Полная поддержка 1.0 узлы Полная поддержка 0.1.100

Легенда

Полная поддержка
Полная опора

См. также

  • Array.prototype.splice()
  • Функция.прототип.вызов()
  • Функция.прототип.bind()

Встроенный JavaScript: Массив: slice | Могу ли я использовать... Таблицы поддержки для HTML5, CSS3 и т. д.

Могу ли я использовать

Поиск

?

Встроенный JavaScript: Массив: slice

  • global">
    Глобальное использование
    96,92% + 0% "=" 96,92%
IE
  1. 6 - 10: Supported
  2. 11: Supported
Edge
  1. 12 - 109: Supported
  2. 110: Supported
Firefox
  1. 2 - 109: Supported
  2. 110: Supported
  3. 111–112: поддерживается
Chrome
  1. 4 - 109: Supported
  2. 110: Supported
  3. 111 - 113: Supported
Safari
  1. 3.1 - 16.2: Supported
  2. 62% - Supported"> 16.3: Supported
  3. 16.4 - TP: Supported
Opera
  1. 10 - 94: Поддержано
  2. 95: Поддержано
Safari на IOS
  1. 3,2 - 16,2: Поддержка
  2. 16.3: Поддержка 9012 2 9038.1038.1038.28.0354
    1. all: Support unknown
    Android Browser
    1. 2.1 - 4.3: Not supported
    2. 4.4 - 4.4.4: Supported
    3. 109: Supported
    Opera Mobile
    1. 12 - 12.1: Supported
    2. 73: Поддержано
    Chrome для Android