문제
function divideArrayInHalf(array) {
const result = [];
for (let i = array.length - 1; i >= 0; i--) {
if (array[i] <= 10) {
result.unshift(array[i]);
console.log(result);
} else if (array[i] > 10) {
result.push(array[i]);
}
}
return result;
}
divideArrayInHalf([1, 20, 10, 5, 100]);
이 문제의 핵심은 뒤에서 부터 재구성을 진행하는 것이다.
그렇기 때문에 for문의 조건이 중요하다.
뒤에서 부터 한개씩 -1을 해야하기 때문에 i-- 을 하고 시작점인 i는 array의 길이에서 -1을 뺀다.
array의 길이에서 -1을 빼는 이유는 배열의 인덱스는 0부터 시작하기 때문에 길이와 index의 개수를 맞추려면 array.length - 1을 해야한다.
그 다음 i가 멈추는 조건은 i가 0과 같거나 커야한다.
처음에 i < array.length 을 조건으로 했다가 length 보다 i는 항상 작기 때문에 무한루프가 걸려버렸다.
그렇기 때문에 배열의 index가 0이 되면 멈춰야 한다. 그래서 0보다 크거나 같다라는 조건을 걸어야한다.