javascript

[Javascript] 배열 ... 사용하기 ( 전개 구문 )

sewonzzang123 2022. 1. 24.
반응형

 

 

ES6의 전개연산자로, 인자로 배열을 사용하고 싶을 때나 배열을 정의하는 리터럴 내에서 사용할 수 있습니다.

표현식은 아래와 같습니다.

 

1. 함수를 호출하는 인자로 배열을 사용할 때

myFunction(...iterableObj);

기존 자바스크립트 문법으로 add 함수를 정의하고, arr 배열도 정의 했습니다.

add 함수를 호출할 때 인자값으로 arr 배열의 원소들을 사용하려면 함수에 기본 메서드인 apply를 활용해야 했습니다.

 

function add(a,b,c){
	return a+b+c;
}

let arr = [2,4,5];
add.apply(null, arr); //11

 

이것을 전개연산자를 이용하면 다음과 같이 표현됩니다.

 

function add(a,b,c){
	return a+b+c;
}

let arr = [2,4,5];
add(...arr); //11

arr 배열을 정의한 후, add 함수를 호출 할 때 전개 연산자를 통해 함수의 인자값으로 배열의 원소를 사용했습니다.

 

2. 배열 리터럴

[...iterableObj, 4, 5, 6 ];

 

배열 리터럴에서 전개연산자를 사용하는 방법입니다.

전개연산자를 사용하지 않았더라면, push, splice, concat 메소드 등을 이용해 작업해야 했을 것 입니다.

 

let arr1 = [3,4,5];
let arr2 = [1,2,...arr,6,7];

console.log(arr2);
// [1,2,3,4,5,6,7]

만약, arr1.push(arr1)를 한다면 어떻게 될까요?

 

[3, 4, 5, [3, 4, 5] ]; 

 

로 원하는 결과가 나오지 않을 것 입니다.

하나로 이어붙이고 싶다면 array.push.apply를 사용해야 할 것 입니다.

 

이것은 복잡하므로, 전개연산자를 가용하면 쉽게 구현이 가능합니다.

 

* 객체에서도 전개구문 (spread operator)를 사용할 수 있습니다.

 

2-1) 배열 리터럴 비구조화 (iterableObj를 선언하지 않고 할당)

[a, b, ...iterableObj] = [1,2,3,4,5];

 


Object를 ...사용하는 방법은 아래 글에서 참고하길 바랍니다.

https://sewonzzang.tistory.com/22

 

[Javascript] 구조 분해 할당 (배열, 객체 분해하기)

객체와 배열은 자바스크립트에서 가장 많이 쓰이는 자료 구조입니다. 함수에 객체나 배열을 전달해야 하는 경우가 생기곤 합니다. 가끔은 객체나 배열에 저장된 데이터 전체가 아닌 일부만 필

sewonzzang.tistory.com

 

발표할 때 이중배열을 전개구문을 사용하면 어떻게 되냐는 질문을 받았는데...

아직 설명을 잘 못하겠다

콘솔창에 해 보니 이중배열은 합쳐지지 않는 것으로 확인했다...


 

참고

https://pro-self-studier.tistory.com/13

 

3. 배열을 좀 더 직관적으로 활용, 전개연산자 (spread operator)

안녕하세요, 프로독학러입니다. 이번 포스팅에서는 ES6의 전개연산자에 대해서 알아보도록 하겠습니다. 전개연산자는 함수를 호출하는 인자로 배열을 사용하고 싶을 때나 배열을 정의하는 리터

pro-self-studier.tistory.com

MDN: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Spread_syntax

 

전개 구문 - JavaScript | MDN

전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시

developer.mozilla.org

 

반응형

댓글