코딩쌀롱

[JS] 반복문 사용하지 않고 배열 생성, 값 넣기 본문

개발공부

[JS] 반복문 사용하지 않고 배열 생성, 값 넣기

이브✱ 2021. 1. 20. 00:41

 

아래의 두 배열을 반복문 사용하지 않고 만들어보자.

① 인덱스가 곧 원소이고, 길이가 num인 배열

  ex) num = 3 → [ 0, 1, 2 ]

         num = 5 → [ 0, 1, 2, 3, 4 ]

 

② 1부터 num까지의 원소를 갖는 배열

  ex) num = 3  → [ 1, 2 , 3 ]

         num = 5  → [ 1, 2, 3, 4, 5 ]

 

1. new Array() + fill + map

// 1번
const getArr1 = num => new Array(num).fill(0).map((_, i) => i);

// 2번
const getArr2 = (num, start = 1) => new Array(num).fill(0).map((_, i) => start + i); 

 

2. Array.from()

// 1번
const getArr1 = num => Array.from({ length: num }, (_, i) => i);

// 2번
const getArr2 = (num, start = 1) => Array.from({ length: num }, (_, i) => i + start);

Array.from()의 첫 번째 인자는 배열로 변환할 유사배열객체나 반복가능한 객체이고, 두 번째 인자는 optional로 배열의 모든 요소에 호출할 맵핑 함수이다. 

 

new Array(), Array.from() 두 방법 간 차이점이 있다.

new Array()로 생성하면 empty로 채워진다. (empty는 순회에서 제외된다)

Array.from()로 생성하면 undefined로 채워진다. (undefined는 순회 가능)

 

3. new Array() + keys

// 1번
const getArr1 = num => [...new Array(num).keys()];

// 2번
const getArr2 = (num, start = 1) => [...new Array(num).keys()].map(e => e + start);

keys() 메서드는 배열의 각 인덱스를 키 값으로 가지는 새로운 Array Iterator 객체를 반환한다.

 

 

Array Iterator는 도대체 뭐지 왜 구글 검색에도 안 나오는 거냐 너는 누구냐..🤷🏻‍♀️

참고 링크에 있는 블로그를 읽고 느낌은 알 것 같은데 이해는 못 했다. 공부 필요...

 

 


참고

블로그 - 배열 메소드 : entries(), keys(), values()

 

학습 단계로 잘못된 정보가 있을 수 있습니다. 잘못된 부분에 대해 알려주시면 곧바로 정정하도록 하겠습니다🙂

 

 

Comments