본문 바로가기

개발/vuejs

두개의 배열 객체에서 중복 추출 ( filter & some )

 

 

 

두개의 배열안에는 object형태의 데이터들이 들어있습니다

 

두개의 배열에서 아래 그림처럼 arr배열과 arr1배열의 중복된 값을 arr2배열로 뽑아낼 에정입니다

 

let arr = [
    {seq:1,name:"kim1"}
    ,{seq:2,name:"kim2"}
    ,{seq:3,name:"kim3"}
    ,{seq:4,name:"kim4"}
    ,{seq:5,name:"kim5"}
]

let arr1 =[
    ,{seq:2,name:"Lee2"}
    ,{seq:3,name:"Lee3"}
    ,{seq:6,name:"Lee6"}
]

let arr2 = arr.filter(x1 => arr1.some(x2 => x1.seq == x2.seq ));

console.log(arr2)

 

 

결과를 먼저 보자면 아래와같이 arr2에  seq=2 와 seq=3을 뽑아낼 수 있습니다.

 

 

 

물론 반복문을 사용해서 하나하나 값을꺼내 비교할 수 있겟지만 javascript에서 만들어 놓은 메소드들을 사용해서 간결하게 해결해 보았습니다

 

filter는 배열의 값을 하나씩 꺼내서 true 인경우 arr2 에 담고 , false인경우 다음으로 넘어가는 동작을 진행합니다

some의 경우 배열의 값을 하나씩 꺼내지만 조건에 충족하는 경우 true를 바로 반환하고 종료합니다.( false인경우 배열끝까지 검색 )