ある配列の要素を0要素から可変長の別の配列の要素に置き換えたい。お気に入り:
var arr = new Array(10), anotherArr = [1, 2, 3], result;
result = anotherArr.concat(arr);
result.splice(10, anotherArr.length);
何か良い方法はありますか?
ある配列の要素を0要素から可変長の別の配列の要素に置き換えたい。お気に入り:
var arr = new Array(10), anotherArr = [1, 2, 3], result;
result = anotherArr.concat(arr);
result.splice(10, anotherArr.length);
何か良い方法はありますか?
このメソッドを使用して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']
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
または、最初の要素を切り取ってanotherArr
onを追加するために使用できますtop
。
result = anotherArr.concat(arr.slice(anotherArr.length));