19

当我这样做时:

var testArray  = ["a","b","c"];
console.log(testArray);
console.log("size:" + testArray.length);

我这个打印在我的控制台中:

["a", "b", "c"]
size:3 

哪个好。但是现在当我开始用这个拼接时:

var testArray  = ["a","b","c"];
console.log(testArray);
console.log("size:" + testArray.length);
testArray = testArray.splice(0,1);

这恰好显示在我的控制台中:

["b", "c", undefined × 1]
size:3 

所以第一个问题是为什么它会弄乱我的阵列打印,即使拼接是在打印之后?大小显示正确,但“a”消失了,最后我得到一个未定义的。

所以我想做的是删除数组中的第一项。基本上是一个转变。所以我这样做:

var testArray  = ["a","b","c"];
console.log(testArray);
console.log("size:" + testArray.length);
testArray = testArray.splice(0,1);
console.log(testArray);
console.log("size:" + testArray.length);

这就是输出的内容:

["b", "c", undefined × 1]
size:3
["a"]
size:1 

不仅大小减少了 2,它还删除了除“a”之外的所有内容。到底是怎么回事?

4

1 回答 1

31

不要将 testArray 分配给自身。只需这样做:

var testArray  = ["a","b","c"];
console.log(testArray);
console.log("size:" + testArray.length);
testArray.splice(0,1);
console.log(testArray);
console.log("size:" + testArray.length);
于 2012-09-07T15:38:49.737 回答