>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 Set-Like 기능을 구현하는 방법은 무엇입니까?

JavaScript에서 Set-Like 기능을 구현하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-28 06:56:30444검색

 How to Achieve Set-Like Functionality in JavaScript?

JavaScript에서 세트를 모방합니까?

질문: JavaScript에서는 세트의 동작을 에뮬레이트하는 데이터 구조를 생성하는 것이 가능합니다. 다음 기능:

  • 값이 집합에 있는지 효율적으로 확인합니다.
  • 요소가 있으면 빠르게 삭제합니다.
  • 값이 없으면 신속하게 요소를 추가합니다. 이미 존재합니다.

이 세트와 같은 기능을 달성하는 가장 좋은 접근 방식은 무엇입니까? 속성을 저장하는 키와 값이 모두 true로 설정된 객체를 사용하는 것이 합리적인 해결책입니까?

답변:

ES6 환경에서는 다음을 활용할 수 있습니다. 원하는 모든 기능을 제공하는 내장 Set 객체.

ES5 이하의 경우:

객체 사용:

값을 나타내는 키와 항상 true로 설정된 값을 사용하여 객체를 생성하는 것은 간단한 작업에서는 작동할 수 있지만 제한이 있습니다. 예를 들어 좀 더 간결한 if(key in obj) 대신 if(obj[key])를 사용하여 진실성을 확인해야 합니다. 더욱이 이 접근 방식은 모든 키를 문자열로 강제 변환하므로 뚜렷하게 작동해야 하는 숫자 키와 문자열 키가 모두 있는 경우 문제가 됩니다.

다음 문제 중 일부를 해결하는 수정된 객체 기반 솔루션을 고려해 보세요.

// create empty object
var obj = {};

// or create an object with some items already in it
var obj = { "1": true, "2": true, "3": true, "9": true };

// Question 1: Is A in the list?
if (Object.prototype.hasOwnProperty.call(obj, A))
    // put code here

// Question 2: Delete 'A' from the list if it's there
delete obj[A];

// Question 3: Add 'A' to the list if it's not already there
obj[A] = true;

사전 구축된 세트 객체:

기성 솔루션을 선호하는 경우 miniSet과 같은 사전 구축된 세트 객체나 기능이 더 풍부한 세트 객체를 활용할 수 있습니다. . 집합 작업을 수행하기 위한 간단한 인터페이스를 제공합니다.

ES6 집합 폴리필:

ES6 호환성을 위해 ES6 집합 폴리필과 같은 폴리필을 사용할 수 있습니다. 이를 통해 IE7 이전 환경에서 작동하는 ES6 호환 코드를 작성할 수 있지만 기본 ES6 Set 객체의 사용 편의성을 완전히 포착하지는 못합니다.

위 내용은 JavaScript에서 Set-Like 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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