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은 영향 ar1
을 ar2
받지 않으며 재 할당되지 않는 한 다음 과 같습니다.
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) ;
답변
push
및 apply
배열을 사용 하여 두 개의 배열을 추가 할 수 있습니다 .
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
됩니다.
답변
경우 arr
배열, 그리고 val
당신이 사용을 추가하고자하는 값은 다음과 같습니다
arr.push(val);
예 :
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);