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

자바스크립트에서 두 배열을 비교해 true/false로 이루어진 새 배열 만드는 방법

자바스크립트에서 두 개의 배열이 있을 때, 한 배열을 다른 배열과 비교하여 마스터(master) 배열의 요소가 키(keys) 배열에 존재하는지 확인해야 하는 경우가 있습니다. 그 결과로 마스터 배열과 길이가 같은 새로운 배열을 만들되, 키 배열에 존재하는 값은 true, 존재하지 않는 값은 false로 채워 넣는 것이 목표입니다.

예를 들어, 두 배열이 다음과 같다고 가정해 보겠습니다.

const master = [3,9,11,2,20];
const keys = [1,2,3];

그렇다면 최종적으로 만들어져야 할 배열은 다음과 같습니다.

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

해결 방법

이 문제는 map() 메서드와 includes() 메서드를 조합하면 아주 간단하게 해결할 수 있습니다. map()으로 마스터 배열의 각 요소를 순회하면서, 해당 요소가 키 배열에 포함되어 있는지 includes()로 확인합니다. includes()는 존재 여부에 따라 불리언 값을 반환하므로, 그대로 새 배열의 요소로 사용하면 됩니다.

예제 코드

const master = [3,9,11,2,20];
const keys = [1,2,3];
const prepareBooleans = (master, keys) => {
    const booleans = master.map(el => {
        return keys.includes(el);
    });
    return booleans;
};
console.log(prepareBooleans(master, keys));

동작 원리

위 코드에서 prepareBooleans 함수는 마스터 배열의 첫 번째 요소 3부터 시작해 각 요소를 하나씩 검사합니다. 3은 키 배열에 있으므로 true, 911은 없으므로 false, 2는 있으므로 true, 20은 없으므로 false가 됩니다. 이 과정을 거쳐 원하는 길이와 순서를 유지한 불리언 배열이 완성됩니다.

실행 결과

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

[ true, false, false, true, false ]