Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 숫자 배열을 양수와 음수로 분할하는 방법

배열을 입력받아 positivenegative라는 두 개의 속성을 가진 객체를 반환하는 함수를 작성해야 합니다. 각 속성은 원본 배열에서 양수 요소들과 음수 요소들을 각각 담고 있는 배열이어야 합니다.

이 문제는 생각보다 간단합니다. Array.prototype.reduce() 메서드를 활용하면 원하는 요소들을 골라내어 두 개의 배열을 가진 객체에 깔끔하게 담을 수 있습니다.

동작 원리

reduce() 메서드는 누적값(accumulator)으로 초기 객체 { positive: [], negative: [] }를 사용합니다. 배열의 각 요소를 순회하면서 값이 0보다 작으면 negative 배열에, 그렇지 않으면 positive 배열에 추가(push)하고 누적 객체를 반환합니다.

예제 코드

const arr = [
    [12, -45, 65, 76, -76, 87, -98],
    [54, -65, -98, -23, 78, -9, 1, 3],
    [87, -98, 3, -2, 123, -877, 22, -5, 23, -67]
];
const splitArray = (arr) => {
    return arr.reduce((acc, val) => {
        if(val < 0){
            acc['negative'].push(val);
        } else {
            acc['positive'].push(val);
        }
        return acc;
    }, {
        positive: [],
        negative: []
    });
};
for(let i = 0; i < arr.length; i++){
    console.log(splitArray(arr[i]));
}

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

{ positive: [ 12, 65, 76, 87 ], negative: [ -45, -76, -98 ] }
{ positive: [ 54, 78, 1, 3 ], negative: [ -65, -98, -23, -9 ] }
{
    positive: [ 87, 3, 123, 22, 23 ],
    negative: [ -98, -2, -877, -5, -67 ]
}

정리

이처럼 reduce() 메서드 하나만으로 별도의 반복문 없이 배열을 조건에 따라 분류할 수 있습니다. 참고로 0은 음수가 아니므로 위 코드에서는 positive 배열에 포함됩니다. 만약 0을 별도로 처리해야 한다면 조건문에 세 번째 분기를 추가하면 됩니다.