16

私はこれについて本当に混乱しています。

私の理解では、それはatの結果にarray.splice(startIndex, deleteLength, insertThing)挿入され、の価値のあるエントリを削除するということでしたか?... それで:insertThingsplice()startIndexdeleteLength

var a = [1,2,3,4,5];
var b = a.splice(1, 0, 'foo');
console.log(b);

私に与えるべきです:

[1,'foo',2,3,4,5]

console.log([1,2,3,4,5].splice(2, 0, 'foo'));

私に与えるべき

[1,2,'foo',3,4,5]

しかし、何らかの理由で、それは私に空の配列を与えているだけですか?見てください:http://jsfiddle.net/trolleymusic/STmbp/3/

ありがとう :)

4

4 に答える 4

24

「splice()」関数は、影響を受ける配列ではなく、削除された要素の配列を返します。何も削除しない場合、結果の配列は空になります。

于 2011-09-22T16:08:45.267 に答える
6

splice()ソース配列を変更し、削除されたアイテムの配列を返します。アイテムの削除を要求しなかったため、空の配列が返されます。元の配列を変更して、新しいアイテムを挿入します。あなたはそれが何であったかを見るために調べましたか?で結果を探しますa

var a = [1,2,3,4,5];
var b = a.splice(1, 0, 'foo');
console.log(a);   // [1,'foo',2,3,4,5]
console.log(b);   // []

jsFiddleの派生では、 http a//jsfiddle.net/jfriend00/9cHre/の結果を参照してください。

于 2011-09-22T16:10:29.653 に答える
4

関数はarray.splice配列をスプライスし、削除された要素を返します。何も削除せず、要素を挿入するために使用するだけなので、空の配列が返されます。

これがあなたが望んでいることだと思います。

var a = [1,2,3,4,5]; 
a.splice(1, 0, 'foo'); 
var b = a;
console.log(b); 
于 2011-09-22T16:10:10.097 に答える