私は、以下のようなスタイルのJavaScriptの配列挿入メソッドを探しています。
arr.insert(index, item)
できればjQueryで作りたいのですが、現時点ではどんなJavaScriptの実装でも構いません。
必要なのは、ネイティブな配列オブジェクトに対するsplice
関数です。
arr.splice(index, 0, item);
は item
を arr
に指定されたインデックスで挿入します (最初に 0
個のアイテムを削除します。つまり、単なる挿入です)。
この例では、配列を作成して、インデックス2に要素を追加します。
var arr = [];
arr[0] = "Jani";
arr[1] = "Hege";
arr[2] = "Stale";
arr[3] = "Kai Jim";
arr[4] = "Borge";
console.log(arr.join());
arr.splice(2, 0, "Lene");
console.log(arr.join());
<! -- スニペットの終了 -->
このようにして、Array.insert
メソッドを実装することができます。
Array.prototype.insert = function ( index, item ) {
this.splice( index, 0, item );
};
そして、次のように使うことができます。
var arr = [ 'A', 'B', 'D', 'E' ];
arr.insert(2, 'C');
// => arr == [ 'A', 'B', 'C', 'D', 'E' ]
複数の要素を一度に配列に挿入したい場合は、Stack Overflowの回答を参照してください: https://stackoverflow.com/questions/1348178/a-better-way-to-splice-an-arrray-into-an-array-in-javascript
また、この2つの例を説明するために、いくつかの関数を紹介します。
function insertAt(array, index) {
var arrayToInsert = Array.prototype.splice.apply(arguments, [2]);
return insertArrayAt(array, index, arrayToInsert);
}
function insertArrayAt(array, index, arrayToInsert) {
Array.prototype.splice.apply(array, [index, 0].concat(arrayToInsert));
return array;
}
最後に、jsFiddleを紹介しますので、ご自身で確認してみてください。
そして、このように関数を使います。
// if you want to insert specific values whether constants or variables:
insertAt(arr, 1, "x", "y", "z");
// OR if you have an array:
var arrToInsert = ["x", "y", "z"];
insertArrayAt(arr, 1, arrToInsert);