이제 객체 배열이 있다고 가정
으아악동일한 ID를 제거하고 각 ID의 마지막 항목을 유지하고 싶습니다
으아악더 좋은 방법이 있나요? .
漂亮男人2017-06-28 09:26:12
여기서 문제가 있습니다. findIndex
최소 2개 이상의 브라우저가 지원하지 않으니, 지원하지 않는다면 직접 작성하셔야 합니다
id는 문자열이 아니므로 ES6 Map
클래스를 사용하세요. 데이터의 양이 많은 경우 조회 테이블을 사용하면 목록의 선형 검색에 비해 효율성이 크게 향상될 수 있습니다.
실제로 지도 대신 개체를 사용할 수도 있습니다. 적어도 이 사용 사례에서는 문제가 없습니다. es6에는 기능이 없기 때문에 es5 구문을 사용합니다. 코드 구조와 로직은 위 문단과 동일합니다
으아악정수형 ID이기 때문에 이 ID에 따라 배열에 직접 넣을 수 있습니다. 동일한 ID가 발견되면 바로 교체됩니다. ID가 연속적이지 않으면 마지막에 빈 요소를 필터링해야 합니다
으아악이 솔루션에는 원래 배열 요소의 순서를 유지할 수 없다는 또 다른 문제가 있습니다. 그러면 누군가는 Map을 사용한 솔루션이 코드를 그렇게 복잡하게 만들지 않고도 유사한 코드로 줄일 수 있다고 생각할 것입니다. 물론 원래 순서를 잃을 수도 있습니다
. 으아악입니다.참고: 위의 코드는 모두 실제로 실행되어 전달되었으며, 실행 환경은 Node v8.1.2
仅有的幸福2017-06-28 09:26:12
여기에는 이미 많은 답변이 있지만 Array의 내장 함수인 ReduceRight에 대한 언급은 없습니다. 실제로 질문자의 요구 사항은 동일한 ID의 마지막 숫자를 유지하는 것인데, 이는 ReduceRight로 구현하는 데 매우 편리합니다.
으아악reduceRight는 원래 배열의 끝에서 반복을 시작합니다. 여기서 초기 값은 배열입니다. r[0]은 ID 집합을 저장하는 데 사용되고 r[1]은 결과 배열을 저장하는 데 사용됩니다. Set에 id를 추가한 다음 이 ID를 Set에 추가하고 이 항목을 결과 배열의 헤드에 배치합니다.
결국 주제 소유자의 요구 사항이 쉽게 충족되었으며 순서가 보장되었습니다.