[javascript] 배열에 무언가를 추가하는 방법?

JavaScript의 배열에 객체 (예 : 문자열 또는 숫자)를 어떻게 추가합니까?



답변

Array.prototype.push방법을 사용하여 배열에 값을 추가 하십시오 .

// initialize array
var arr = [
  "Hi",
  "Hello",
  "Bonjour"
];

// append new value to the array
arr.push("Hola");

console.log(arr);


push()함수를 사용하여 단일 호출에서 배열에 둘 이상의 값을 추가 할 수 있습니다 .

// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];

// append multiple values to the array
arr.push("Salut", "Hey");

// display all values
for (var i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}


최신 정보

한 배열의 항목을 다른 배열에 추가하려면 다음을 사용할 수 있습니다 firstArray.concat(secondArray).

var arr = [
  "apple",
  "banana",
  "cherry"
];

arr = arr.concat([
  "dragonfruit",
  "elderberry",
  "fig"
]);

console.log(arr);

최신 정보

첫 번째 인덱스를 의미하는 배열의 시작 부분에 값을 추가하려는 경우이 답변에 추가하면 Array.prototype.unshift이 목적으로 사용할 수 있습니다 .

var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);

마찬가지로 여러 값을 한 번에 추가 할 수 push있습니다.


답변

단일 변수 만 추가하는 경우 제대로 push()작동합니다. 다른 배열을 추가해야하는 경우 다음을 사용하십시오 concat().

var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];

var ar3 = ar1.concat(ar2);

alert(ar1);
alert(ar2);
alert(ar3);

concat은 영향 ar1ar2받지 않으며 재 할당되지 않는 한 다음 과 같습니다.

var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];

ar1 = ar1.concat(ar2);
alert(ar1);

여기 에 좋은 정보가 많이 있습니다 .


답변

일부 빠른 벤치마킹 (각 테스트 = 500k 추가 요소 및 결과는 여러 번 실행 된 평균 임)은 다음과 같습니다.

Firefox 3.6 (Mac) :

  • 소형 어레이 : arr[arr.length] = b더 빠름 (300ms 대 800ms)
  • 큰 어레이 : arr.push(b)더 빠름 (500ms 대 900ms)

Safari 5.0 (Mac) :

  • 소형 어레이 : arr[arr.length] = b더 빠름 (90ms 대 115ms)
  • 큰 어레이 : arr[arr.length] = b더 빠름 (160ms 대 185ms)

Chrome 6.0 (Mac) :

  • 작은 배열 : 큰 차이는 없습니다 (그리고 Chrome은 빠릅니다! ~ 38ms 만!)
  • 큰 배열 : 큰 차이 없음 (160ms)

나는 arr.push()구문을 더 좋아하지만 arr[arr.length]적어도 원시 속도로 버전을 사용하는 것이 더 나을 것이라고 생각 합니다. IE 실행 결과를보고 싶습니다.


내 벤치마킹 루프 :

function arrpush_small() {
    var arr1 = [];
    for (a = 0; a < 100; a++)
    {
        arr1 = [];
        for (i = 0; i < 5000; i++)
        {
            arr1.push('elem' + i);
        }
    }
}

function arrlen_small() {
    var arr2 = [];
    for (b = 0; b < 100; b++)
    {
        arr2 = [];
        for (j = 0; j < 5000; j++)
        {
            arr2[arr2.length] = 'elem' + j;
        }
    }
}


function arrpush_large() {
    var arr1 = [];
    for (i = 0; i < 500000; i++)
    {
        arr1.push('elem' + i);
    }
}

function arrlen_large() {
    var arr2 = [];
    for (j = 0; j < 500000; j++)
    {
        arr2[arr2.length] = 'elem' + j;
    }
}


답변

여러 인수를 사용하여 push를 호출 할 수 있다고 언급 할 가치가 있다고 생각합니다. 예를 들면 다음과 같습니다.

var arr = ['first'];
arr.push('second', 'third');
console.log(arr);

결과적으로 push.apply를 사용하여 다음과 같이 다른 배열에 배열을 추가 할 수 있습니다.

var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);

어노테이션이있는 ES5 에는 푸시적용이 수행하는 작업 에 대한 자세한 정보 가 있습니다.

2016 업데이트 : spread 를 사용하면 apply더 이상 필요하지 않습니다 .

var arr = ['first'];
arr.push('second', 'third');

arr.push(...['fourth', 'fifth']);
console.log(arr) ;


답변

pushapply배열을 사용 하여 두 개의 배열을 추가 할 수 있습니다 .

var array1 = [11, 32, 75];
var array2 = [99, 67, 34];

Array.prototype.push.apply(array1, array2);
console.log(array1);

에 추가 array2됩니다 array1. 이제 array1포함되어 있습니다 [11, 32, 75, 99, 67, 34]. 이 코드는 for배열의 각 항목을 복사하기 위해 루프를 작성하는 것보다 훨씬 간단 합니다.


답변

새로운 ES6 스프레드 연산자를 사용 push하면 두 배열을 사용하여 훨씬 쉽게 연결할 수 있습니다.

var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);

arr2의 끝에 내용이 추가 arr됩니다.

바벨 REPL 예


답변

경우 arr배열, 그리고 val당신이 사용을 추가하고자하는 값은 다음과 같습니다

arr.push(val);

예 :

var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);