여기에는 이미 많은 답변이 있지만 Array의 내장 함수인 ReduceRight에 대한 언급은 없습니다. 실제로 질문자의 요구 사항은 동일한 ID의 마지막 숫자를 유지하는 것인데, 이는 ReduceRight로 구현하는 데 매우 편리합니다.
으아악
reduceRight는 원래 배열의 끝에서 반복을 시작합니다. 여기서 초기 값은 배열입니다. r[0]은 ID 집합을 저장하는 데 사용되고 r[1]은 결과 배열을 저장하는 데 사용됩니다. Set에 id를 추가한 다음 이 ID를 Set에 추가하고 이 항목을 결과 배열의 헤드에 배치합니다.
관례에 따라 ES6 코드
으아악여기서 문제가 있습니다.
으아악findIndex
최소 2개 이상의 브라우저가 지원하지 않으니, 지원하지 않는다면 직접 작성하셔야 합니다기타 솔루션
클래식 솔루션, 지도 사용
id는 문자열이 아니므로 ES6
으아악Map
클래스를 사용하세요. 데이터의 양이 많은 경우 조회 테이블을 사용하면 목록의 선형 검색에 비해 효율성이 크게 향상될 수 있습니다.실제로 지도 대신 개체를 사용할 수도 있습니다. 적어도 이 사용 사례에서는 문제가 없습니다. es6에는 기능이 없기 때문에 es5 구문을 사용합니다. 코드 구조와 로직은 위 문단과 동일합니다
으아악정수 ID를 사용하는 이상한 해결책
정수형 ID이기 때문에 이 ID에 따라 배열에 직접 넣을 수 있습니다. 동일한 ID가 발견되면 바로 교체됩니다. ID가 연속적이지 않으면 마지막에 빈 요소를 필터링해야 합니다
으아악이 솔루션에는 원래 배열 요소의 순서를 유지할 수 없다는 또 다른 문제가 있습니다. 그러면 누군가는 Map을 사용한 솔루션이 코드를 그렇게 복잡하게 만들지 않고도 유사한 코드로 줄일 수 있다고 생각할 것입니다. 물론 원래 순서를 잃을 수도 있습니다
. 으아악 입니다.으아악
화살표 기능을 사용하면 다음과 같이 단순화됩니다.
으아악여기에는 이미 많은 답변이 있지만 Array의 내장 함수인 ReduceRight에 대한 언급은 없습니다. 실제로 질문자의 요구 사항은 동일한 ID의 마지막 숫자를 유지하는 것인데, 이는 ReduceRight로 구현하는 데 매우 편리합니다.
으아악reduceRight는 원래 배열의 끝에서 반복을 시작합니다. 여기서 초기 값은 배열입니다. r[0]은 ID 집합을 저장하는 데 사용되고 r[1]은 결과 배열을 저장하는 데 사용됩니다. Set에 id를 추가한 다음 이 ID를 Set에 추가하고 이 항목을 결과 배열의 헤드에 배치합니다.
결국 주제 소유자의 요구 사항이 쉽게 충족되었으며 순서가 보장되었습니다.
으아악
개인적으로 테스트를 거쳤으며 효과적입니다
으아악
let newArr = [],
으아악으아악
참고해주세요
으아악제가 블로그에 쓴 글을 참고하시면 됩니다. http://alfierichou.top/2017/0...