함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
x | n | answer |
---|---|---|
2 | 5 | [2,4,6,8,10] |
4 | 3 | [4,8,12] |
-4 | 2 | [-4, -8] |
n번 실행되는 while문을 돌며 배열 answer에 push하고 num은 num에 x를 더해준 값으로 업데이트 시켜준다. (x
, x+x
, x+x+x
, x+x+x+x
... 순으로 answer에 push됨)
function solution(x, n) {
let answer = [];
let num = x;
while (answer.length < n) {
answer.push(num);
num += x;
}
return answer;
}
x를 따로 저장하여 업데이트 시켜줄 필요가 없었다.
function solution(x, n) {
var answer = [];
for (let i = 1; i <= n; i++) {
answer.push(x * i)
}
return answer;
}
Array.from
길이가 n인 배열을 만들어서 x에 인덱스+1을 곱한 값으로 mapping
function solution(x, n) {
return Array.from({ length: n }, (val, idx) => (idx + 1) * x);
}
정적 메서드 Array.from()
은 이터러블 또는 유사 배열 객체를 얕은 복사(shallow copy)하여 새로운 배열 인스턴스를 반환한다.
Array.from('foo') // -> [ 'f', 'o', 'o' ]
Array.from({ 0: '가', 1: '나', length: 2 }); // -> [ '가', '나' ]
Array.from(obj [, mapFn[, thisArg]])
두 번째 인수로 map()
기능을 하는 콜백함수를 전달할 수 있다.
Array.from([1, 2, 3], x => x + x); // -> [2, 4, 6]
Array.from([1, 2, 3], (x, i) => x * i); // -> [0, 2, 6]
value
)으로 해당 인덱스(index
)와 동일하게 줄 수 있다.Array.from({ length: 5 }, (v, i) => i);
// [0, 1, 2, 3, 4]
function f() {
return Array.from(arguments);
}
f(1, 2, 3); // -> [1, 2, 3]
// Sequence generator function (commonly referred to as "range", e.g. Clojure, PHP, etc.)
const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));
// Generate numbers range 0..4
range(0, 4, 1);
// [0, 1, 2, 3, 4]
// Generate numbers range 1..10 with step of 2
range(1, 10, 2);
// [1, 3, 5, 7, 9]