2013-05-05 3 views
2

У меня есть небольшая проблема с пониманием, почему я получаю этот вывод.Почему я получаю этот вывод из этой простой команды сращивания?

var arr = ["a", "b", "c", "d", "e", "f"]; 
arr.splice(2,0,"1"); 
console.log(arr); 

var arr2 = ["a", "b", "c", "d", "e", "f"]; 
arr2 = arr2.splice(2,0,"2"); 
console.log(arr2); 

Ouput является:

[ 'a', 'b', '1', 'c', 'd', 'e', 'f' ] 
[] 

Почему вторая строка вывода: не

[ 'a', 'b', '2', 'c', 'd', 'e', 'f' ] 

Является ли это вопрос о присвоении или что?

ответ

7

Чтение о splice Метод. Он возвращает

Массив, содержащий удаленные элементы. Если удаляется только один элемент, возвращается массив из одного элемента.

Так делая

arr2 = arr2.splice(2,0,"2"); 

вы перезаписать исходный массив arr с пустым массивом [] возвращенного сращиванием.

+0

Полностью не видел этот ответ. В противном случае не отправил бы дубликат. :) – techfoobar

+0

Итак, нельзя ли цепочки .split() и .splice()? Если у нас есть 'var str =" 12345 ";' для вывода: '[" 1 "," 2 "," a "," 3 "," 4 "," 5 "]' нам нужно сделать: 'var arr = str.split (" "); arr.splice (2,0, "а"); return arr; '? Почему мы не можем использовать 'arr = str.split (" "). Splice (2,0," a ");' – Moolla

+0

@Moolla Нет, вы не можете их цепью, так как 'splice' не возвращается первый массив. – dfsq

2

1 - Метод сращивания Изменяет содержание массива

2 - Метод сращивания возвращает элемент удален - ** Не оригинальный массив **

Смежные вопросы