배열에서 객체의 반복 제외

9365 단어 JavaScripttech
#한번은
자바스크립트로 배열에 저장할 때 대상의 중복을 삭제해야 합니다.
[
 { name:'Apple',jpname:'りんご',price:'5000000000000000'},
 { name:'Orange',jpname:'みかん',price:'200'},
 { name:'Banana', jpname:'バナナ',price:'200'},
],
[
 { name:'Apple',jpname:'りんご',price:'200'},
 { name:'Grape',jpname:'ぶどう',price:'200'},
 { name:'melon', jpname:'メロン',price:'200'},
]
이 두 배열을 병합하고 싶지만 중복된 동일한 대상이 존재하는 상황에서 배제하고 싶은 경우 등

수법

filterfindIndex 등을 사용하는 방법이 있습니다.
맵 객체를 사용하여 중복 제거를 시도해 봅니다.

사용할 기능


Array.reduce
Map Object
Array.from

코드


이번 요점 코드는 다음과 같다.
  const mergearray = [...array1, ...aaray2];

  const resultarray = Array.from(
    mergearray.reduce((map, currentitem) => 
	    map.set(currentitem.text.engname, currentitem),
            new Map()
      ).values()
    );

설명


처리 순서에 따라 코드를 설명하다.
우선 두 개의 배열을 하나로 합치다.
이때는 간단하게 두 개를 하나로 배열할 뿐이다.
  const mergearray = [...array1, ...aaray2];
다음에 합병된 배열Array.reduce을 사용하여 매개 변수에서 처리한다.
    mergearray.reduce((map, currentitem) => 
	   //.....//  ,
            new Map() //初期値としてMap Objectのインスタンスを作成
      ).values()
이곳의 점은 Array.reduceinitialValue 최초의 초기값이다
인스턴스를 생성합니다.
이로써 Map Object의 호출에서 호출된 마지막 값은 처음부터 시작됩니다Array.reduce.
다음에 Map Object를 사용하여 방금 제작한 Map Objectset와 현재 처리된 그룹 요소를 추가합니다.
   map.set(currentitem.name, currentitem)
이때 set의 첫 번째 매개 변수는 key로 바뀌어 그 내용을 만든다.
   {
     Apple:{...},
     Orange:{...},
     ....
   }
의 상황에 따라 제작되었습니다.
여기에 동일한 키가 있으면 해당 컨텐트가 덮어쓰여집니다.
같은 내용이 있는 경우 중복된 내용을 덮어쓴 뒤 제외하는 것이다.
마지막으로 작성된 맵 객체에 따라 배열을 생성합니다.
  const resultarray = Array.from( ... );
매개 변수에 들어가는 균형기나 대상에서 새 배열 실례를 만듭니다key.
이번에는 Array.from부터 지나가는데 이것을 배열하기 위해 이용Mapオブジェクト합니다.
이렇게 하면 중복을 배제하는 그룹을 만들 수 있다.

끝말


반복되는 단순 정렬을 제외하려면 Array.from() 객체 사용
복잡한 객체의 정렬을 중복 제거하면 Set에서 제대로 작동하지 않습니다.
조금이나마 공을 들여야 한다.
이번 내용은 Set 사용 대상!

좋은 웹페이지 즐겨찾기