JavaScript 배열 비교하기

김형민·2021년 5월 24일
0

JavaScript 두개의 배열 비교하기


두개의 배열을 비교하는 방법 세가지

두 배열이 동일한 지
두 배열의 교집합
두 배열의 차집합

Loop (반복문)

배열들을 반복하여 모든 단일 요소가 일치하는 지 확인한다.

const a1 = [1, 2, 3];
const a2 = [1, 2, 3]; 
const a3 = [1, 2, 3, 4];

const getResult = function (a1, a2) {
   let i = a1.length;
   if (i != a2.length) return false;

   while (i--) {
     if (a1[i] !== a2[i]) return false;
   }
   return true;
 };

console.log("Comparing a1 and a2", getResult(a1, a2)); //Comparing a1 and a2 true
console.log("Comparing a1 and a3", getResult(a1, a3)); //Comparing a1 and a3 false를 입력하세요

i-- 조건 : while문 안에 조건이 0이될 때 false로 인식하고 반복문이 종료되기 때문에 배열의 길이인 i만큼 반복하기 위함이다.


JSON.stringify()

이 함수는 JSON 형식으로 서버와 데이터를 주고받을 때 문자열 형태로 변경하기 위해 사용하는 것이지만 여기서는 배열을 문자열로 변경하여 아주 간편하게 배열을 비교할 수 있게 해주는 역할을 한다. 배열을 문자열로 변경하면 요소를 하나씩 꺼내 비교할 필요없이 ===만으로 동일 여부를 판단할 수 있다.

const a1 = [1, 2, 3];
const a2 = [1, 2, 3]; 
const a3 = [1, 2, 3, 4];

console.log("Comparing a1 and a2", JSON.stringify(a1) === JSON.stringify(a2));
console.log("Comparing a1 and a3", JSON.stringify(a1) === JSON.stringify(a3));력하세요

두 배열의 교집합

아래 두 가지 method를 이용하면 배열 간 교집합과 차집합을 간단한 코드로 표현할 수 있다.

  • Array.filter() : 조건에 해당하는 요소들만을 포함한 새로운 배열 반환하는 함수
  • Array.includes() : 배열 안에 특정 요소가 포함되어 있는 지 여부를 반환하는 함수

두 배열의 교집합 찾기

const a2 = [1, 2, 3]; 
const a3 = [1, 2, 3, 4];

console.log(a2.filter(x=> a3.includes(x)));

a2 배열 요소들에 대하여 filter 함수 괄호 안에 있는 조건에 해당되는 요소들만으로 새로운 배열을 생성하는 것이며 이 때의 조건이란 a3 배열에 포함되어 있어야 하는 것이다.
즉 비교대상 A의 요소가 비교대상 B 배열 안에 포함되어 있는 경우들만 추려내는 과정이다.

두 배열의 차집합 찾기

const a2 = [1, 2, 3]; 
const a3 = [1, 2, 3, 4];

console.log(a2.filter(x=> !a3.includes(x)));

차이는 NOT연산자(!)

a2 배열 요소들에 대하여 filter 함수 괄호 안에 있는 조건에 해당되는 요소들만으로 새로운 배열을 생성하는 것이며 이 때의 조건이란 a3 배열에 포함되어 있지 않아야 하는 것이다.
즉 비교대상 A의 요소가 비교대상 B 배열 안에 포함되어 있지 않은 경우들만 추려내는 과정이다.

profile
항해 중인 개발자

0개의 댓글