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

JavaScript에서 OR(||) 연산자로 여러 불리언 배열 병합하기

문제 상황

다음과 같은 불리언 배열의 배열(2차원 배열)이 있다고 가정해 보겠습니다.

const arr = [[true,false,false],[false,false,false],[false,false,true]];

각 하위 배열의 같은 위치에 있는 요소들을 OR(||) 연산자로 결합하여, 이 배열을 하나의 1차원 배열로 병합하는 함수를 작성해야 합니다.

해결 방법: Array.prototype.reduce() 활용

이 문제는 Array.prototype.reduce() 메서드를 사용하면 깔끔하게 해결할 수 있습니다. reduce()는 배열을 순회하면서 누적값(acc)을 만들어 가기 때문에, 여러 개의 배열을 하나로 합치는 작업에 특히 적합합니다.

예제 코드

const arr = [[true,false,false],[false,false,false],[false,false,true]];
const orMerge = arr => {
    return arr.reduce((acc, val) => {
        val.forEach((bool, ind) => acc[ind] = acc[ind] || bool);
        return acc;
    }, []);
};
console.log(orMerge(arr));

코드 동작 원리

  • reduce()의 초기값으로 빈 배열 []을 지정합니다.
  • 각 하위 배열(val)을 순회하며 forEach로 현재 값(bool)과 인덱스(ind)를 가져옵니다.
  • acc[ind] || bool 연산을 통해 기존 누적값과 현재 값을 OR 결합합니다. 따라서 해당 위치의 값 중 하나라도 true이면 최종 결과도 true가 됩니다.

실행 결과

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

[ true, false, true ]