알고리즘 29 - Reversed sequence
Q.
Build a function that returns an array of integers from n to 1 where n>0.
Example : n=5 --> [5,4,3,2,1]
A)
const reverseSeq = n => {
let buf = [];
for (let i = 0; i < n; i++)
buf.push(n - i);
return buf;
};
other
const reverseSeq = n => {
let buf = [];
for (let i = 0; i < n; i++)
buf.push(n - i);
return buf;
};
풀면서도 뭔가 다른 메소드로 for
문을 안 돌아도 될 방법이 있을 것 같은데...🧐 라고 생각했는데 다른 솔루션들을 보다가 .fill()
을 발견했다! 이게 뭐지! 또 .map()
의 인자를 두 개 받아오다니!! 이게 뭐란말인가!😱
new Array()
: new Array(num)
으로 num 길이의 배열을 만들어준다!
.fill()
: arr.fill(value, start, end)
이렇게 배열의 시작인덱스부터 끝 인덱스까지 value
값을 채운다.
.map()
: 각 요소에 접근하는데 i인덱스로 num 길이만큼 i + 1 (그러니까 1부터) 반환한다. d는 reduce처럼 누산기라고 생각하자!
마지막으로 .reverse()
로 뒤집어준다.
const reverseSeq = num => {
return new Array(num)
.fill()
.map((d, i) => i + 1)
.reverse()
};
솔직히 이해가 잘 안 가서 직접 해 보았다.
new Array(3) // [비어 있음 × 3] 아예 값처럼 인덱스로 접근할 수 없다.
new Array(3).fill() // [undefined, undefined, undefined]이제 접근할 수 있다!
new Array(5).fill().map(i => i + 1) //[NaN, NaN, NaN]
new Array(3).fill().map((d, i) => i + 1) // [1, 2, 3]
new Array(5).fill().map((d, i) => i + 1).reverse() // [3, 2, 1]
휴 새로운 new Array().fill()
도 배우고 .map()
의 색다른 활용에 대해서도 배웠다. map 이녀석 정말 만능인 것 같다. 잘 익혀서 나중에 나도 써먹어야지. 이렇게 undefined인 배열에 넣을 수 있다니!
Author And Source
이 문제에 관하여(알고리즘 29 - Reversed sequence), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pearpearb/알고리즘-29-Reversed-sequence저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)