두 개의 배열 안에서 중복값 찾기
각기 다른 두 개의 배열 안에서 gameNo 라는 공통된 값을 찾아 제거한 후 새로운 배열로 return 해야 하는 일이 있었다.
아무래도 filter가 리턴 조건을 충족하는 요소만 모아서 새로운 배열을 만들어주니까 filter 안에 filter 를 넣어서 함수를 만들어 보았다.
const writeDate = resGame.data.content.filter((playGame) => review.data.content.filter( (review) => review.gameUserNo !== playGame.gameUserNo ) )
근데 값이 나오지 않았다. 중복값이 제거되지를 않더라.
!==를 ===으로 바꾸어도 결과는 똑같았다. 이유가 뭘까 고민해봤는데 filter 안의 filter는 true false 값만 배출해 주어야 상위 filter 에서 새로운 배열을 만들어 주는데 나는 filter 함수 안에서 계속 true 값만 내보냈기 때문에 !==를 사용해도 ===를 사용해도 값이 똑같았던 것이었다.
const writeDate = resGame.data.content.filter((playGame) => !review.data.content.filter( (review) => review.gameUserNo === playGame.gameUserNo ) )
공통된 값을 boolean으로 만들어주니 중복값이 잘 제거되었다.
혹시 filter말고 find나 some을 사용해도 되나 싶어서 해 보았는데 잘 되었다.
const writeDate = resGame.data.content.filter((playGame) => { return !review.data.content.some( (review) => review.gameUserNo === playGame.gameUserNo ) })
const writeDate = resGame.data.content.filter((playGame) => { return !review.data.content.find( (review) => review.gameUserNo === playGame.gameUserNo ) })
혹시 두 개의 배열에서 중복값 제거하는 또 다른 방법이 있나 찾아 보았다.
reduce를 사용하는 방법도 한 번 고민해 봐야겠다.
Author And Source
이 문제에 관하여(두 개의 배열 안에서 중복값 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@storyno7/두-개의-배열-안에서-중복값-찾기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)