44

ある配列の要素を0要素から可変長の別の配列の要素に置き換えたい。お気に入り:

var arr = new Array(10), anotherArr = [1, 2, 3], result;
result = anotherArr.concat(arr);
result.splice(10, anotherArr.length);

何か良い方法はありますか?

4

7 に答える 7

61

このメソッドを使用してsplice、配列の一部を別の配列のアイテムに置き換えることができますが、配列ではなくアイテムをパラメーターとして想定しているため、特別な方法で呼び出す必要があります。

メソッドはのspliceようなパラメーターを想定(0, anotherArr.Length, 1, 2, 3)しているため、パラメーターを使用して配列を作成し、メソッドを使用してパラメーターを使用してapplyメソッドを呼び出す必要spliceがあります。

Array.prototype.splice.apply(arr, [0, anotherArr.length].concat(anotherArr));

例:

var arr = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
var anotherArr = [ 1, 2, 3 ];

Array.prototype.splice.apply(arr, [0, anotherArr.length].concat(anotherArr));

console.log(arr);

出力:

[ 1, 2, 3, 'd', 'e', 'f', 'g', 'h', 'i', 'j']

デモ: http://jsfiddle.net/Guffa/bB7Ey/

于 2013-07-07T10:38:06.060 に答える
3

spliceを使用するだけで、古い要素を削除しながら新しい要素を追加できます。

var arr = new Array(10), anotherArr = [1, 2, 3];

arr.splice.apply(arr, [0, anotherArr.length].concat(anotherArr))

配列を変更したくない場合は、配列の浅いコピーを返すスライスarrを使用できます。

var arr = new Array(10), anotherArr = [1, 2, 3], result = arr.slice(0);

result.splice.apply(result, [0, anotherArr.length].concat(anotherArr));

sliceまたは、最初の要素を切り取ってanotherArronを追加するために使用できますtop

result = anotherArr.concat(arr.slice(anotherArr.length));
于 2013-07-07T10:38:49.867 に答える