Javascript.RU

splice

Синтаксис

arrayObj.splice( start, deleteCount, [elem1[, elem2[, ...[, elemN]]]] )

Аргументы

start
Индекс в массиве, с которого начинать удаление.
deleteCount
Кол-во элементов, которое требуется удалить, начиная с индекса start.
  • IE: если этот параметр не указан, то ни одни элемент не будет удалён.
  • Firefox: если этот параметр не указан, то будут удалены все элементы, начиная с индекса start.
  • Opera: (исследовано в версии 9.61) если этот параметр не указан, то будут удалён 1 элемент, имеющий индекс start+1. В этом же случае вместо удалённого элемента будет возвращена пустая строка.
elem1, elem2, ..., elemN
Добавляемые элементы в массив. Добавление начинается с позиции start.

Описание, примеры

Пожалуй, самый комплексный метод для работы с массивом.

Он объединяет в себе две разные функциональности: удаляет часть массива и добавляет новые элементы на место удаленных.

При этом можно свести к нулю количество удаляемых элементов - тогда это будет просто добавление.

И можно не добавлять элементов - тогда это будет просто удаление.

Метод возвращает массив из удаленных элементов.

Пример: Удаление
arr = [ "a", "b", "c", "d", "e" ]
removed = arr.splice(1,2) 

// removed = [ "b", "c"] (2 элемента с arr[1])
// arr = ["a", "d", "e"] (те что остались)
Пример: Удаление одного элемента
arr = [ "a", "b", "c", "d", "e" ]
// удалим с индекса 2 один элемент
arr.splice(2,1) 
// arr = ["a", "b", "d", "e"]
Пример: Добавление элементов
arr = [ "a", "b", "c", "d", "e" ]
// начиная с индекса 2 удалим 0 элементов 
// и добавим "b+"
arr.splice(2,0,"b+")
// arr = ["a", "b", "b+", "c", "d", "e"]
Пример: С конца
arr = [ "a", "b", "c", "d", "e" ]
// удалим с индекса 1 начиная с конца 1 элемент
arr.splice(-1,1)

Автор: Гость (не зарегистрирован), дата: 26 октября, 2010 - 11:05
#permalink
[js]<strong><img src="" alt="" /></strong>
[/js]

Автор: Гость (не зарегистрирован), дата: 26 ноября, 2010 - 22:14
#permalink

elem1, elem2, ..., elemN
Добавляемые элементы в массив. Добавление начинается с позиции start.

Дополнение - если elemN массив, он добавляется как 1 элемент. Поэтому, если требуется добавить элементы из другого массива, но оставить исходный массив одномерным, нужно предварительно сформировать строку из элементов elemN, разделенных запятыми, и использовать eval()

Пример:
arr = [ "a,b,c", "d", "e" ]
из этого надо получить:
arr = [ "a", "b", "c", "d", "e" ]

for (j=0;j<arr.length;++j){
 var k=-1
 var tmp=[]
 while (arr[j].indexOf(",",k+1)>-1){
  if ((arr[j].indexOf(",",k+1)>0)&&(arr[j].substring(k+1,arr[j].indexOf(",",k+1))!=""))
   tmp.push(arr[j].substring(k+1,arr[j].indexOf(",",k+1)))
  k=arr[j].indexOf(",",k+1)
 }
 if ((arr[j].indexOf(",",k+1)<arr[j].length)&&(arr[j].substring(k+1)!=""))
  tmp.push(arr[j].substring(k+1))
 if (tmp.length>1){//поскольку предыдущий if всегда добавит хотя бы 1 элемент в tmp
  s=''
  for (var z=0;z<tmp.length;++z){
   s=s+'"'+tmp[z]+'"'
   if (z!=tmp.length-1) s=s+','
  }
  eval("arr.splice(j,1,"+s+")")
  j+=tmp.length-1
 }
}

Автор: elser (не зарегистрирован), дата: 2 февраля, 2011 - 15:25
#permalink

Пример:
arr = [ "a,b,c", "d", "e" ]
из этого надо получить:
arr = [ "a", "b", "c", "d", "e" ]
------------------------------------

ведь можно и так:

var abc = arr.splice(0,1);
var res = abc.split(",").concat(arr);


Автор: VIT (не зарегистрирован), дата: 13 апреля, 2011 - 22:15
#permalink

у вас будет работать только в одном случае
вот правильынй вариант:

arr=arr.join(',');
arr=arr.split(',');

Автор: termi_uc, дата: 30 марта, 2012 - 09:37
#permalink

Проблема с разной реализацией решается очень просто:

;(function(_origArraySplice) {
if([1,2].splice(0).length != 2) {
	Array.prototype.splice = function(index, howMany) {
		return _origArraySplice.call(
			this, 
			index,
			howMany === void 0 ? 
				(this.length - index) : 
				howMany,
			Array.prototype.slice.call(arguments, 2)
			)
	}
}
})(Array.prototype.splice);

Автор: Дмитрий Минаев (не зарегистрирован), дата: 2 мая, 2012 - 16:25
#permalink

Обмен двух соседних элементов массива, аналог swap.
В index - адрес первого из меняемых

array.splice(index, 2, array[index + 1], array[index]);

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
13 + 1 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама

Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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