7

jconsoleで splice() メソッドを試していました

a = [1,2,3,4,5,6,7,8,9,10]
1,2,3,4,5,6,7,8,9,10

ここで、a は 1 から 10 までの単純な配列です。

b = ['a','b','c']
a,b,c

そして、これはbです

a.splice(0, 2, b)
1,2
a
a,b,c,3,4,5,6,7,8,9,10

配列 b を splice の 3 番目の引数に渡すとき、「インデックス 0 から a の最初の 2 つの引数を削除し、それらを b 配列に置き換える」ことを意味します。splice() の 3 番目の引数として配列を渡すことは見たことがありません (私が読んだすべてのガイド ページでは、引数のリストについて説明しています)。[1,2] が削除され、a は [a,b,c,3,4,5,6,7,8,9,10] になります。次に、c: と呼ぶ別の配列を作成します。

c = ['one','two','three']
one,two,three

そして同じことをしてみてください:

a.splice(0, 2, c)
a,b,c,3
a
one,two,three,4,5,6,7,8,9,10

今回は、(2 つではなく) 4 つの要素が削除され [a,b,c,3]、最初に c 配列が追加されます。誰かが理由を知っていますか?解決策は些細なことだと確信していますが、今はわかりません。

4

1 に答える 1

6

Array.spliceは、3 番目のパラメーターとして配列をサポートしていません。
参照: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice

Firebug (または Chrome のコンソール)を使用すると、実際に何が起こるかがわかります。

a.splice(0, 2, b)
> [1, 2]
a
> [["a", "b", "c"], 3, 4, 5, 6, 7, 8, 9, 10]

ここでの問題は jconsole です。これは単にtoString()配列を出力するために使用しますが、何も出力Array.toString()しません[]

于 2010-12-01T11:40:30.423 に答える