ES6(Harmony)에서 새로운 Set 객체는 해당 요소에 대한 참조 동일성을 도입합니다. 그러나 이 동작은 객체를 심층적으로 비교하는 데 항상 적합하지 않을 수 있습니다.
다음 코드 조각을 고려하세요.
var set = new Set(); set.add({a:1}); set.add({a:1}); console.log([...set.values()]); // Array [ Object, Object ]
가능한 한 참고로, 두 객체 모두 동일한 속성과 값을 가지고 있더라도 참조 동등성으로 인해 서로 다른 것으로 간주됩니다.
안타깝게도 ES6 Set 객체는 빌드된 객체를 제공하지 않습니다. - 동등 비교를 사용자 정의하는 방법입니다. 비교 논리를 재정의하도록 확장하는 것도 어려울 수 있습니다.
Set 객체에 대한 사용자 정의 비교가 직접 지원되지는 않지만 대체 데이터 구조 또는 기술 사용을 고려할 수 있습니다.
1. 불변 값 개체:
응답에 언급된 기사에서는 불변 값 개체를 사용하여 Set에서 심층 값 비교를 사용할 수 있도록 제안합니다. 그러나 이는 현재 JavaScript의 표준이 아닙니다.
2. 심층 비교가 가능한 사용자 정의 데이터 구조:
Set에서 상속하고 객체 ID를 사용하는 메서드를 재정의하는 고유한 사용자 정의 데이터 구조를 만들 수 있습니다. 그러나 이를 위해서는 Set 구현을 완전히 다시 작성해야 하며 이는 대규모 세트에는 효율적이지 않습니다.
위 내용은 JavaScript 세트 객체의 요소에 대한 심층적인 동등 비교를 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!