comportement comique de Array.splice ()
-
29-09-2019 - |
Question
I expérimentais avec la méthode splice () dans jconsole
a = [1,2,3,4,5,6,7,8,9,10]
1,2,3,4,5,6,7,8,9,10
Ici, un est un simple tableau de 1 à 10.
b = ['a','b','c']
a,b,c
Et voici b
a.splice(0, 2, b)
1,2
a
a,b,c,3,4,5,6,7,8,9,10
Quand je passe la matrice B au troisième argument d'épissure, je veux dire « retirer les deux premiers arguments d'un index à partir de zéro, et les remplacer par le réseau de b ». Je ne l'ai jamais vu passer un tableau comme jonction () est troisième argument (tous les pages du guide que je lis parler sur une liste d'arguments), mais, eh bien, il semble faire l'affaire. [1,2] sont éliminés et maintenant est [a, b, c, 3,4,5,6,7,8,9,10]. Ensuite, je construis un autre tableau, que j'appelle c:
c = ['one','two','three']
one,two,three
Et essayer de faire la même chose:
a.splice(0, 2, c)
a,b,c,3
a
one,two,three,4,5,6,7,8,9,10
Cette fois, 4 (au lieu de 2) éléments sont supprimés [a, b, c, 3] et la matrice de c est ajouté au début. Quelqu'un sait pourquoi? Je suis sûr que la solution est triviale, mais je ne comprends pas en ce moment.
La solution
Array.splice
fait pas soutenir un tableau comme le troisième paramètre.
Référence: https://developer.mozilla.org/en/JavaScript/Reference / Global_Objects / Array / épissure
Utilisation Firebug (ou console de Chrome), on voit ce qui se passe vraiment:
a.splice(0, 2, b)
> [1, 2]
a
> [["a", "b", "c"], 3, 4, 5, 6, 7, 8, 9, 10]
problème ici est jconsole, qui utilise juste toString()
pour imprimer les tableaux, mais Array.toString()
n'imprime pas []
.