>  기사  >  웹 프론트엔드  >  Javascript에서 집합 차이 계산을 위한 효율적이고 우아한 기술은 무엇입니까?

Javascript에서 집합 차이 계산을 위한 효율적이고 우아한 기술은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-21 10:49:02966검색

What are the Efficient and Elegant Techniques for Set Difference Computation in Javascript?

Javascript의 효율적이고 우아한 집합 차이 계산

Javascript에서 집합 연산을 처리할 때 집합을 계산하는 효율적이고 우아한 방법 찾기 차이(A - B)는 일반적인 문제입니다. 몇 가지 방법을 살펴보겠습니다.

네이티브 함수 접근 방식

한 가지 간단한 해결책은 네이티브 Javascript 함수를 활용하는 것입니다.

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

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

console.log(diff); // [2]

여기서 필터 함수는 배열 A를 반복하면서 indexOf 작업을 사용하여 각 요소가 B에 있는지 확인합니다. 찾을 수 없는 경우 해당 요소는 차이 배열 diff에 추가됩니다.

연결 및 정렬 트릭

또 다른 접근 방식은 Javascript 연결 및 정렬 동작을 활용합니다.

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

A = A.concat(B).sort().filter((v, i, a) => a[i] !== a[i + 1]);

console.log(A); // [2, 7]</code>

두 배열을 연결하고 정렬하여 고유한 요소의 정렬된 목록을 얻습니다. 연속된 중복 항목을 필터링하면 집합 차이를 얻을 수 있습니다.

객체 기반 접근 방식

해시맵과 같은 객체를 활용하여 두 배열의 고유 요소를 저장하는 것이 효율적인 솔루션을 제공합니다.

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

var setA = {};
A.forEach(function(x) { setA[x] = true; });

var setDiff = {};
B.forEach(function(x) { setDiff[x] = true; });

Object.keys(setA).forEach(function(x) {
  if (!setDiff[x]) {
    setDiff[x] = true;
  }
});

var diff = Object.keys(setDiff);

console.log(diff); // [2, 7]</code>

이 접근 방식은 객체를 해시맵으로 사용하여 두 배열의 요소를 추적하고 차이를 효율적으로 계산합니다.

이러한 방법은 효율성과 우아함 측면에서 서로 다른 절충점을 제공합니다. 특정 요구사항에 가장 적합한 것을 선택하세요.

위 내용은 Javascript에서 집합 차이 계산을 위한 효율적이고 우아한 기술은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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