아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 양의 정수 배열 arr가 매개변수로 주어질 때, arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요.
function solution(arr) {
var x = [];
for(let s of arr){
for(let i=0;i<s;i++){
x.push(s);
}
}
return x;
}
=> 빈 배열에 arr 각 원소를 돌면서 각 원소의 수 만큼 빈 배열에 원소를 추가해준다.
function solution(arr) {
return arr.reduce((list, num) => [...list, ...new Array(num).fill(num)], []);
}
=> arr 원소크기의 배열을 만들어 그 원소로 그 배열을 채우기. 배열을 전개하기.
function solution(arr) {
return arr.reduce((a, c) => a.concat(Array(c).fill(c)), [])
}
=> 위와 풀이는 같고 Array.prototype.concat() 메서드를 사용해 배열을 합쳐주었다. 메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환한다.
const solution=a=>a.map(v=>Array(v).fill(v)).flat()
}
=>flat() 메서드는 모든 하위 배열 요소를 지정한 깊이까지 재귀적으로 이어붙인 새로운 배열을 생성합니다. 예를 들어 [[5,5,5,5,5],[1],[2,2]] 이 이차배열을 flat()메서드를 사용하면 [5,5,5,5,5,1,2,2]로 평탄화 시킬 수 있다.