여러 요소를 하나의 배열로 푸시하려고하지만 오류가 발생합니다.
> a = []
[]
> a.push.apply(null, [1,2])
TypeError: Array.prototype.push called on null or undefined
나는 내가 그 생각, 루비에서 할 거라고 유사한 물건을 할 노력하고있어 apply
같은입니다 *
.
>> a = []
=> []
>> a.push(*[1,2])
=> [1, 2]
답변
와 객체의 대부분의 기능을 사용하는 경우 apply
또는 call
의 context
매개 변수는 작업중인 객체 여야합니다.
이 경우, 당신은 필요합니다 a.push.apply(a, [1,2])
(또는 더 정확하게 Array.prototype.push.apply(a, [1,2])
)
답변
답변
이제 ECMAScript2015 (일명 ES6)에서는 스프레드 연산자 를 사용하여 여러 항목을 한 번에 추가 할 수 있습니다 .
var arr = [1];
var newItems = [2, 3];
arr.push(...newItems);
console.log(arr);
참조 Kangax의 ES6 호환성 브라우저 호환성을 확인하려면 테이블을
답변
답변
Array.concat
ECMAScript 2015 (일명 ES6, ES2015) 의 대안으로 배열을 수정하지 않고 새 배열을 반환하는 경우 다음 과 같이 스프레드 연산자를 사용할 수 있습니다 .
var arr = [1];
var newItems = [2, 3];
var newerItems = [4, 5];
var newArr = [...arr, ...newItems, ...newerItems];
console.log(newArr);
메소드가 배열을 변경 / 수정하므로 push
메소드와 다릅니다 push
.
브라우저에서 특정 ES2015 기능이 작동하는지 확인하려면 Kangax의 호환성 표를 확인하십시오 .
당신은 또한 사용할 수 있습니다 바벨 당신이 브라우저 지원을 위해 대기 할 및 생산 ES2015을 사용하지 않으려는 경우 또는 유사한 transpiler합니다.
답변
사용하는 것이 좋습니다 많은 답변이 있습니다 : Array.prototype.push(a, b)
. 좋은 방법입니다. 그러나 실제로 b가 크면 스택 오버플로 오류가 발생합니다 (너무 많은 인수 때문에). 여기서 조심하십시오.
N 배열을 연결하는 가장 효율적인 방법 은 무엇입니까?를 참조하십시오 . 상세 사항은.
답변
var a=[];
a.push({
name_a:"abc",
b:[]
});
a.b.push({
name_b:"xyz"
});