Вопрос

Я экспериментировал с методом сплайсинга () в JConsole

a = [1,2,3,4,5,6,7,8,9,10]
1,2,3,4,5,6,7,8,9,10

Здесь A - это простой массив от 1 до 10.

b = ['a','b','c']
a,b,c

И это б

a.splice(0, 2, b)
1,2
a
a,b,c,3,4,5,6,7,8,9,10

Когда я передаю массив B к третьему аргументу сплайсинга, я имею в виду «удалить первые два аргумента A из индекса Zero и заменить их на массив B». Я никогда не видел, чтобы проходил массив в качестве третьего аргумента Splice () (все Руководные страницы, которые я прочитал Поговорите о списке аргументов), но, ну, похоже, это делает свое дело. [1,2] удалены, а теперь A IS [A, B, C, 3,4,5,6,7,8,9,10]. Затем я строю еще один массив, который я называю c:

c = ['one','two','three']
one,two,three

И постарайтесь сделать то же самое:

a.splice(0, 2, c)
a,b,c,3
a
one,two,three,4,5,6,7,8,9,10

На этот раз 4 (вместо 2) элементы удаляются [A, B, C, 3], а массив C добавляется в начале. Кто -то знает, почему? Я уверен, что решение тривиально, но я не понимаю прямо сейчас.

Это было полезно?

Решение

Array.splice делает нет Поддержите массив в качестве третьего параметра.
Справка: https://developer.mozilla.org/en/javascript/reference/global_objects/array/splice

С использованием Firebug (или консоль Chrome), можно увидеть, что на самом деле происходит:

a.splice(0, 2, b)
> [1, 2]
a
> [["a", "b", "c"], 3, 4, 5, 6, 7, 8, 9, 10]

Проблема здесь - JConsole, который просто использует toString() распечатать массивы, но Array.toString() не печатает [].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top