>  기사  >  웹 프론트엔드  >  JavaScript 세트 객체의 요소에 대한 심층적인 동등 비교를 어떻게 달성할 수 있습니까?

JavaScript 세트 객체의 요소에 대한 심층적인 동등 비교를 어떻게 달성할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-12 05:28:02332검색

How Can I Achieve Deep Equality Comparison for Elements in a JavaScript Set Object?

JavaScript Set 객체에 대한 동일성 사용자 정의

ES6(Harmony)에서 새로운 Set 객체는 해당 요소에 대한 참조 동일성을 도입합니다. 그러나 이 동작은 객체를 심층적으로 비교하는 데 항상 적합하지 않을 수 있습니다.

객체 평등을 위한 의도하지 않은 동작:

다음 코드 조각을 고려하세요.

var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]

가능한 한 참고로, 두 객체 모두 동일한 속성과 값을 가지고 있더라도 참조 동등성으로 인해 서로 다른 것으로 간주됩니다.

Set 객체에 대한 사용자 정의 비교:

안타깝게도 ES6 Set 객체는 빌드된 객체를 제공하지 않습니다. - 동등 비교를 사용자 정의하는 방법입니다. 비교 논리를 재정의하도록 확장하는 것도 어려울 수 있습니다.

잠재적 해결 방법:

Set 객체에 대한 사용자 정의 비교가 직접 지원되지는 않지만 대체 데이터 구조 또는 기술 사용을 고려할 수 있습니다.

1. 불변 값 개체:

응답에 언급된 기사에서는 불변 값 개체를 사용하여 Set에서 심층 값 비교를 사용할 수 있도록 제안합니다. 그러나 이는 현재 JavaScript의 표준이 아닙니다.

2. 심층 비교가 가능한 사용자 정의 데이터 구조:

Set에서 상속하고 객체 ID를 사용하는 메서드를 재정의하는 고유한 사용자 정의 데이터 구조를 만들 수 있습니다. 그러나 이를 위해서는 Set 구현을 완전히 다시 작성해야 하며 이는 대규모 세트에는 효율적이지 않습니다.

위 내용은 JavaScript 세트 객체의 요소에 대한 심층적인 동등 비교를 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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