Question

Je suis en train de tableau de jonction deux à partir du tableau à deux dimensions arr .

var one = ["a","b"];  
var two = ["c","d"];  
var thr = ["e","f"];  
var arr = [one,two,thr];

Voici mes deux tentatives infructueuses:

1)

var rem = arr.splice(1,1);  
alert(rem[0]);  
// This alerts the entire array as one long string "c,d".
// The expected behavior is "c" (index 0 of the returned array _rem_).

2)

var rem = arr[1].splice(0);  
alert(arr);  
// The array _rem_ is now correct, but _arr_ is left with an empty index: "a,b,,e,f".

J'ai un moins de solution idéale, mais je suis l'espoir d'y arriver avec une fonction.

var test = arr[1].slice(0);  
arr.splice(1,1);
Était-ce utile?

La solution

observation intéressante. De l'ECMA-caractéristiques (262, ed 5.):

Lorsque la méthode de jonction est appelée avec deux ou plusieurs arguments commencent, deleteCount et (éventuellement) item1, item2, etc., les éléments de deleteCount de la matrice à partir de l'index de tableau début sont remplacés par les arguments article1, article2, etc. Un objet Array contenant les éléments supprimés (si tout) est retourné .

Array.splice donc des rendements un tableau des éléments supprimés . Donc, si vous souhaitez référencer le tableau supprimé, cela devrait être la syntaxe:

var rem = arr.splice(1,1)[0];
alert(rem[0]); //=> 'c'

Autres conseils

Vous semblez confus, peut-être par ce qui se passe lorsque vous passez un tableau à alert(). D'après ce que je peux dire ce que vous voulez, votre premier exemple est correct. Avant de faire une épissure, ce que vous avez dans votre variable arr est

[
   ["a", "b"],
   ["c", "d"],
   ["e", "f"]
]

Après avoir appelé var rem = arr.splice(1, 1), qui supprime un élément de arr à l'index 1 et le stocke dans un tableau à rem variable ce que vous avez est

arr:

[
   ["a", "b"],
   ["e", "f"]
]

rem:

[
   ["c", "d"]
]

rem[0] est le ["c", "d"] de tableau, ce qui est ce que je croyais que tu voulais.

Je pense que son travail comme prévu méthode splice renvoie toujours un tableau.

quand vous dites arr [1] .splice (0); sa vocation Spilce sur un seul et donne [ 'a']

Et quand vous arr.splice (1,1); il retournera [un]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top