it-source

여러 요소를 배열에 푸시

criticalcode 2023. 1. 13. 19:50
반응형

여러 요소를 배열에 푸시

여러 요소를 하나의 어레이로 푸시하려고 하는데 다음 오류가 나타납니다.

> a = []
[]
> a.push.apply(null, [1,2])
TypeError: Array.prototype.push called on null or undefined

루비랑 비슷한 걸 하려고 하는데apply뭐랄까*.

>> a = []
=> []
>> a.push(*[1,2])
=> [1, 2]

다음과 같은 방법으로 여러 요소를 배열에 푸시할 수 있습니다.

var a = [];
    
a.push(1, 2, 3);

console.log(a);

이제 ECMAScript2015(일명, e.k.a. ES6)에서 스프레드 연산자를 사용하여 한 번에 여러 항목을 추가할 수 있습니다.

var arr = [1];
var newItems = [2, 3];
arr.push(...newItems);
console.log(arr);

호환되는 브라우저는 Kangax의 ES6 호환성 표를 참조하십시오.

오브젝트의 대부분의 기능을 사용하는 경우apply또는call,그context매개 변수는 작업 중인 개체여야 합니다.

이 경우,a.push.apply(a, [1,2])(또는 더 정확하게 말하면)Array.prototype.push.apply(a, [1,2]))

다음을 사용할 수 있습니다.

var result = a.concat(b);

여러 아이템을 추가하려면spread교환입니다.

a = [1,2]
b = [3,4,5,6]
a.push(...b)

출력은 다음과 같습니다.

a = [1,2,3,4,5,6]

다른 방법을 원하시면Array.concatECMAScript 2015(일명.k.a)에 수록되어 있습니다.ES6, ES2015)는 어레이를 수정하지 않고 새 어레이를 반환하며 다음과 같이 스프레드 연산자를 사용할 수 있습니다.

var arr = [1];
var newItems = [2, 3];
var newerItems = [4, 5];
var newArr = [...arr, ...newItems, ...newerItems];
console.log(newArr);

이것은, 다음의 서버와는 다른 것에 주의해 주세요.push로서 메서드pushmethod는 어레이를 변환/변환합니다.

특정 ES2015 기능이 브라우저에서 작동하는지 확인하려면 Kangax의 호환성 표를 확인하십시오.

또한 브라우저 지원을 기다리지 않고 프로덕션에서 ES2015를 사용하려는 경우 Babel 또는 이와 유사한 트랜스필러를 사용할 수 있습니다.

권장되는 답변은 다음과 같습니다.Array.prototype.push(a, b)좋은 방법이지만 b가 너무 크면 스택오버플로우 에러가 발생합니다(arg가 너무 많아서).여기서 조심해요.

N개의 어레이를 연결하는 가장 효율적인 방법은 무엇입니까?를 참조하십시오.자세한 것은, 을 참조해 주세요.

더 쉬운 방법은

a = []
a.push(1,2,3)

또 다른 방법은

a = [...a, 4,5,6]

다른 배열을 작성하려면

const b = a.concat(7,8,9)

저도 같은 의문을 가지고 있었습니다.저에게는 더 쉬운 해결책이 있었습니다.

let array = []
array.push(1, 2, 4, "string", new Object())
console.log(array)
// logs [ 1, 2, 4, 'string', {} ]

한 번에 여러 개체를 푸시하는 것은 종종 어떻게 선언하느냐에 따라 달라집니다.array.

나는 이렇게 했다.

//declaration
productList= [] as  any;

지금이다push기록.

this.productList.push(obj.lenght, obj2.lenght, items);

옵션 1: concat() 사용:새 어레이를 반환할 때 추가 공간이 필요합니다.

let array1=['a','b']
let array2=['c','d']
let array3=['e','f']
let res=array1.concat(array2,array3)

옵션 2: 확산 연산자 사용:추가 공간을 차지하지 않고 동일한 어레이에서 작동합니다.

let array1=['a','b']
let array2=['c','d']
let array3=['e','f']
array1.push(...array2,...array3)

ES6 확산 연산자를 사용하십시오.

let a = [1,2,3];
let b = [4,5,6];
a = [...a,...b];
// [1,2,3,4,5,6]
var a=[];
a.push({
 name_a:"abc",
 b:[]
});

a.b.push({
  name_b:"xyz"
});

언급URL : https://stackoverflow.com/questions/14723848/push-multiple-elements-to-array

반응형