배열에서 객체의 반복 제외
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'},
]
이 두 배열을 병합하고 싶지만 중복된 동일한 대상이 존재하는 상황에서 배제하고 싶은 경우 등수법
filter
와findIndex
등을 사용하는 방법이 있습니다.맵 객체를 사용하여 중복 제거를 시도해 봅니다.
사용할 기능
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.reduce
의 initialValue
최초의 초기값이다인스턴스를 생성합니다.
이로써
Map Object
의 호출에서 호출된 마지막 값은 처음부터 시작됩니다Array.reduce
.다음에
Map Object
를 사용하여 방금 제작한 Map Object
에 set
와 현재 처리된 그룹 요소를 추가합니다. map.set(currentitem.name, currentitem)
이때 set의 첫 번째 매개 변수는 key
로 바뀌어 그 내용을 만든다. {
Apple:{...},
Orange:{...},
....
}
의 상황에 따라 제작되었습니다.여기에 동일한 키가 있으면 해당 컨텐트가 덮어쓰여집니다.
같은 내용이 있는 경우 중복된 내용을 덮어쓴 뒤 제외하는 것이다.
마지막으로 작성된 맵 객체에 따라 배열을 생성합니다.
const resultarray = Array.from( ... );
매개 변수에 들어가는 균형기나 대상에서 새 배열 실례를 만듭니다key
.이번에는
Array.from
부터 지나가는데 이것을 배열하기 위해 이용Mapオブジェクト
합니다.이렇게 하면 중복을 배제하는 그룹을 만들 수 있다.
끝말
반복되는 단순 정렬을 제외하려면
Array.from()
객체 사용복잡한 객체의 정렬을 중복 제거하면
Set
에서 제대로 작동하지 않습니다.조금이나마 공을 들여야 한다.
이번 내용은
Set
사용 대상!
Reference
이 문제에 관하여(배열에서 객체의 반복 제외), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/renoa/articles/2825c127095198bd41b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)