javascript - 어레이 중복 제거 문제
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-28 09:24:12
0
9
637

이제 객체 배열이 있다고 가정

으아악

동일한 ID를 제거하고 각 ID의 마지막 항목을 유지하고 싶습니다

으아악

더 좋은 방법이 있나요? .

女神的闺蜜爱上我
女神的闺蜜爱上我

모든 응답(9)
漂亮男人

관례에 따라 ES6 코드

으아악

여기서 문제가 있습니다. findIndex최소 2개 이상의 브라우저가 지원하지 않으니, 지원하지 않는다면 직접 작성하셔야 합니다

으아악

기타 솔루션

클래식 솔루션, 지도 사용

id는 문자열이 아니므로 ES6 Map 클래스를 사용하세요. 데이터의 양이 많은 경우 조회 테이블을 사용하면 목록의 선형 검색에 비해 효율성이 크게 향상될 수 있습니다.

으아악

실제로 지도 대신 개체를 사용할 수도 있습니다. 적어도 이 사용 사례에서는 문제가 없습니다. es6에는 기능이 없기 때문에 es5 구문을 사용합니다. 코드 구조와 로직은 위 문단과 동일합니다

으아악

정수 ID를 사용하는 이상한 해결책

정수형 ID이기 때문에 이 ID에 따라 배열에 직접 넣을 수 있습니다. 동일한 ID가 발견되면 바로 교체됩니다. ID가 연속적이지 않으면 마지막에 빈 요소를 필터링해야 합니다

으아악

이 솔루션에는 원래 배열 요소의 순서를 유지할 수 없다는 또 다른 문제가 있습니다. 그러면 누군가는 Map을 사용한 솔루션이 코드를 그렇게 복잡하게 만들지 않고도 유사한 코드로 줄일 수 있다고 생각할 것입니다. 물론 원래 순서를 잃을 수도 있습니다

. 으아악

참고: 위의 코드는 모두 실제로 실행되어 전달되었으며, 실행 환경은 Node v8.1.2

입니다.
某草草

으아악

화살표 기능을 사용하면 다음과 같이 단순화됩니다.

으아악
仅有的幸福

여기에는 이미 많은 답변이 있지만 Array의 내장 함수인 ReduceRight에 대한 언급은 없습니다. 실제로 질문자의 요구 사항은 동일한 ID의 마지막 숫자를 유지하는 것인데, 이는 ReduceRight로 구현하는 데 매우 편리합니다.

으아악

reduceRight는 원래 배열의 끝에서 반복을 시작합니다. 여기서 초기 값은 배열입니다. r[0]은 ID 집합을 저장하는 데 사용되고 r[1]은 결과 배열을 저장하는 데 사용됩니다. Set에 id를 추가한 다음 이 ID를 Set에 추가하고 이 항목을 결과 배열의 헤드에 배치합니다.

결국 주제 소유자의 요구 사항이 쉽게 충족되었으며 순서가 보장되었습니다.

曾经蜡笔没有小新

으아악

개인적으로 테스트를 거쳤으며 효과적입니다

伊谢尔伦

으아악

滿天的星座

let newArr = [],

으아악
学习ing

으아악

Peter_Zhu

참고해주세요

으아악
为情所困

제가 블로그에 쓴 글을 참고하시면 됩니다. http://alfierichou.top/2017/0...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿