특정 색인 (자바 스크립트)의 배열에 항목을 삽입하는 방법
질문
나는 다음과 같은 스타일로 JavaScript 배열 삽입 방법을 찾고 있습니다.
arr.insert(index, item)
jQuery에서는 바람직하게는이 시점에서 모든 JavaScript 구현이 수행 될 것입니다.
답변
스플 라이스 함수를 기본 배열 객체에서 원합니다.
array.splice (색인, 0, 항목);지정된 인덱스 (첫 번째 항목 삭제, 즉 삽입물 일뿐입니다) 항목을 배열에 삽입합니다.
이 예에서는 배열을 만들고 요소를 인덱스 2에 추가합니다.
var arr = []; ARR [0] = "Jani"; ARR [1] = "히스"; ARR [2] = "오래 되었습니까?"; ARR [3] = "카이 짐"; ARR [4] = "붕괴"; console.log (arr.join ());// Jani, Hege, Sabe, Kai Jim, Borge arro.splice (2, 0, "Lene"); console.log (arr.join ());// jani, hege, lene, stale, 카이 짐, 붕괴
답변
이렇게하여 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' ]
답변
스플 라이스 이외에 원래의 배열을 변하지 않는이 방법을 사용할 수 있지만 추가 된 항목이있는 새 배열이 생성됩니다.가능할 때마다 돌연변이를 피해야합니다.ES6 스프레드 연산자를 사용하고 있습니다.
const 항목 = [1, 2, 3, 4, 5] const insert = (arr, index, newitem) => [ // 지정된 인덱스 앞에 배열의 일부입니다 ... arr.slice (0, 색인), // 삽입 된 항목 새로운 물품, // 지정된 인덱스 뒤에 배열의 일부입니다 ... arr.slice (색인) ...에] const 결과 = 삽입 (항목, 1, 10) console.log (결과) // [1, 10, 2, 3, 4, 5]
이는 새로운 항목에 대한 REST 연산자를 사용하여 REST 연산자를 사용하도록 비트를 조정하여 하나 이상의 항목을 추가하는 데 사용할 수 있습니다.
const 항목 = [1, 2, 3, 4, 5] const insert = (arr, index, ... newitems) => [ // 지정된 인덱스 앞에 배열의 일부입니다 ... arr.slice (0, 색인), // 항목을 삽입했습니다 ...새로운 물건, // 지정된 인덱스 뒤에 배열의 일부입니다 ... arr.slice (색인) ...에] const 결과 = 삽입 (항목, 1, 10, 20) console.log (결과) // [1, 10, 20, 2, 3, 4, 5]
답변
사용자 지정 배열 삽입 방법
1. 여러 개의 인수와 체인 지원
/* Syntax:
array.insert(index, value1, value2, ..., valueN) */
Array.prototype.insert = function(index) {
this.splice.apply(this, [index, 0].concat(
Array.prototype.slice.call(arguments, 1)));
return this;
};
그것은 여러 요소를 삽입 할 수 있으며 (네이티브 스플 라이스가 수행)을 지원하고 체인을 지원합니다.
["a", "b", "c", "d"].insert(2, "X", "Y", "Z").slice(1, 6);
// ["b", "X", "Y", "Z", "c"]
2. 어레이 유형 인수 병합 및 연결 지원
/* Syntax:
array.insert(index, value1, value2, ..., valueN) */
Array.prototype.insert = function(index) {
index = Math.min(index, this.length);
arguments.length > 1
&& this.splice.apply(this, [index, 0].concat([].pop.call(arguments)))
&& this.insert.apply(this, arguments);
return this;
};
주어진 배열과 인수에서 배열을 병합 할 수 있으며 체인을 지원할 수 있습니다.
["a", "b", "c", "d"].insert(2, "V", ["W", "X", "Y"], "Z").join("-");
// "a-b-V-W-X-Y-Z-c-d"
데모 : http://jsfiddle.net/upphh/
답변
한 번에 여러 요소를 배열에 삽입하려는 경우이 스택 오버플로 답변을 확인하십시오. JavaScript의 배열에 배열을 연결하는 더 좋은 방법
또한 두 가지 예제를 설명하는 일부 기능이 있습니다.
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이므로 자신을 위해 그것을 볼 수 있습니다 : http://jsfiddle.net/luisperezphd/wc8as/
그리고 이것은 기능을 사용하는 방법입니다.
// 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);
답변
적절한 기능적 프로그래밍 및 체이닝 목적을 위해, Array.Prototype.Insert ()의 발명품이 필수적입니다.실제로, 스플 라이스는 완전히 의미없는 빈 배열 대신 돌연변이가있는 배열을 반환하면 완벽 할 수있었습니다.그래서 여기에 간다 :
Array.Prototype.Insert = 기능 (i, ... 휴지) { this.splice (I, 0, ... 휴식) 이걸 돌려 보내라 } VAR A = [3,4,8,9]; document.write ( "
+ JSON.Stringify (a.insert (2,5,6,7) +" pre> ");글쎄, OK, Array.Prototype.Splice ()가 원래의 배열이 돌연변이가되며 일부는 "당신에게 속하지 않는 것을 수정해서는 안됩니다"라고 불평 할 수 있으며 옳은 것으로 밝혀지지 않을 수도 있습니다.따라서 공공 복지를 위해서는 원래의 배열을 돌파하지 않는 다른 Array.Prototype.Insert ()를 제공하고자합니다.여기 간다;
Array.Prototype.Insert = 기능 (i, ... 휴지) { this.slice (0, i) .concat (rest, this.slice (i))를 반환합니다. } VAR A = [3,4,8,9], b = a.insert (2,5,6,7); console.log (JSON.Stringify (a)); console.log (JSON.Stringify (b));
출처:https://stackoverflow.com/questions/586182/how-to-insert-an-item-into-an-array-at-a-specific-index-javascript
최근댓글