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 に答える