Pregunta

I estaba experimentando con el método de corte y empalme () en jconsole

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

Aquí, a es una matriz sencilla de 1 a 10.

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

Y esto es b

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

Cuando paso la matriz B para el tercer argumento de empalme, quiero decir "quitar los dos primeros argumentos de una de índice de cero, y reemplazarlos con la b array". Nunca he visto pasar una matriz como de empalme () 's tercer argumento (todas las páginas de la guía href="http://www.w3schools.com/jsref/jsref_splice.asp" rel="noreferrer"> sobre una lista de argumentos), pero, bueno, parece que hacer el truco. [1,2] se eliminan y ahora a es [a, b, c, 3,4,5,6,7,8,9,10]. A continuación, voy a construir otra matriz, que llamo c:

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

Y tratar de hacer lo mismo:

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

Esta vez, 4 se eliminan (en lugar de 2) elementos [a, b, c, 3] y la matriz C se añade al principio. Alguien sabe por qué? Estoy seguro de que la solución es trivial, pero no lo entiendo en este momento.

¿Fue útil?

Solución

hace Array.splice no apoyar una matriz como el tercer parámetro.
Referencia:
https://developer.mozilla.org/en/JavaScript/Reference / Global_Objects / array / empalme

Firebug (o consola de Chrome), uno ve lo que realmente sucede:

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

El problema aquí es jconsole, que sólo utiliza toString() para imprimir los arrays, pero Array.toString() no imprime ninguna [].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top