>  기사  >  웹 프론트엔드  >  Javascript 배열에서 세트 차이를 효율적으로 계산하는 방법은 무엇입니까?

Javascript 배열에서 세트 차이를 효율적으로 계산하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-21 11:22:29829검색

How to Compute Set Difference Efficiently in Javascript Arrays?

Javascript 배열을 사용한 효율적인 집합 차이 계산

두 배열 간의 집합 차이를 계산하는 것은 데이터 조작 및 집합 이론에서 중요한 작업이 될 수 있습니다. 배열이 기본 데이터 구조 역할을 하는 Javascript에서는 이 작업을 수행하기 위한 효율적이고 우아한 방법을 찾는 것이 필수적입니다.

한 가지 간단한 접근 방식은 아래에 설명된 대로 기본 array.filter() 함수를 활용하는 것입니다.

<code class="js">var A = [1, 2, 3, 4];
var B = [1, 3, 4, 7];

var diff = A.filter(function(x) {
  return B.indexOf(x) < 0;
});</code>

이 접근 방식은 indexOf() 함수를 활용하여 A의 요소가 B에 존재하는지 확인합니다. 그렇지 않은 경우 요소는 결과 diff 배열에 추가됩니다. 간단하지만 A의 각 요소에 대해 B 배열 내에서 선형 검색을 수행해야 한다는 단점이 있어 잠재적으로 O(n^2) 시간 복잡도가 발생할 수 있습니다.

더 큰 배열의 경우 다음을 사용하여 성능을 향상할 수 있습니다. 다음 알고리즘:

  1. B의 모든 요소를 ​​포함하는 집합 S를 만듭니다.
  2. A를 반복하고 S에서 찾을 수 없는 요소를 차이 배열 diff에 추가합니다.
<code class="js">var s = new Set(B);
var diff = A.filter(function(x) {
  return !s.has(x);
});</code>

S 세트를 사용하면 멤버십 테스트가 일정한 시간에 수행되어 전체 시간 복잡도가 O(n)이 됩니다.

위 내용은 Javascript 배열에서 세트 차이를 효율적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.