24

ArrayA と ArrayB の 2 つの配列があります。(参照を作成するのではなく) ArrayA を ArrayB にコピーする必要があり、使用してきましたが.splice(0)、最初の配列から要素が削除されているように見えることに気付きました。

コンソールで、このコードを実行すると:

var ArrayA = [];
var ArrayB = [];

ArrayA.push(1);
ArrayA.push(2);

ArrayB = ArrayA.splice(0);

alert(ArrayA.length);

アラートは 0 を示しています。私は何を間違っています.splice(0)か??

あなたの洞察に感謝します。

4

3 に答える 3

49

( MDN docu ) ではなく ( MDN docu )slice()使いたい!splice()

ArrayB = ArrayA.slice(0);

slice()元の配列はそのままにして、コピーを作成するだけです。

splice()一方、要素を挿入または削除して元の配列を変更するだけです。

于 2012-08-22T12:28:54.930 に答える
5

splice(0)それ以降のすべてのアイテム0(つまり、最後のアイテムまで、つまりすべて) を取得し、元の配列からそれらを削除して返します。

于 2012-08-22T12:30:18.180 に答える
4

あなたが探しているslice

var a = [1,2,3,4,5]
   ,b = a.slice();
//=> a = [1,2,3,4,5], b = [1,2,3,4,5]

を使用できますが、元の配列splice破壊されます。

var a = [1,2,3,4,5]
   ,b = a.splice(0);
//=> a = [], b = [1,2,3,4,5]
于 2012-08-22T12:32:09.157 に答える