1) 원본 변형 : O
- slice 는 배열을 얕은 복사 해서 새로운 배열로 반환
- splice 는 배열의 기존 요소를 추가, 변경, 삭제해 원본 배열을 변경
function solution(num_list, n) {
let answer = []
while(num_list.length > 0) {
answer.push(num_list.splice(0,n))
}
return answer
}
2) 원본 보존 : O
function solution(num_list, n) {
let answer = []
for (let i=0; i<num_list.length/n; i++) {
answer = [...answer, num_list.slice(i*n, i*n+n)]
}
return answer
}
function solution(num_list, n) {
let result = [];
for (let i = 0; i < num_list.length / n; i++) {
result = [...result, num_list.slice(i * n, i * n + n)];
}
return result;
}
1) num_list.length 가 아닌 (num_list.length / n) 회 반복 :
0부터 num_list.length 까지 모든 원소를 하나하나 돌며 result 에 넣는게 아니라, num_list 각각의 원소를 한 번에 n 개씩 묶어서 result 에 넣기 때문
예) n=2 일 경우, (0~2), (3~5), (6~8), ...
for (let i = 0; i < num_list.length / n; i++) { ... }
2) 전개 연산자(spread operator) 를 이용해 result 배열 복사하여 병합
for (let i = 0; i < num_list.length / n; i++) {
result = [...result, num_list.slice(i * n, i * n + n)];
}