저는 Node 4.0을 사용하고 있고 지금까지의 기능이 정말 마음에 들어서 코드를 ES6으로 업데이트하려고 합니다. 하지만 새로운 ES6 Map
数据结构有问题,因为当使用 Array
作为键时,它的行为与 {}
에서는 느낌이 달라졌습니다. 카운터 맵으로 사용하고 있습니다.
이 코드를 실행했는데 배열을 Map
의 키로 사용하는 방법을 알고 싶습니다.
다음이 인쇄됩니다. 첫 번째 줄은 1
而不是 undefined
:
원래 JS 맵은 키를 문자열화하므로 새로운 ES6 Map
에서는 동일한 유형의 문자열화 해킹을 수행하고 싶지 않습니다.
ES6 Map
에서 배열을 키로 안정적으로 사용할 수 있는 방법은 무엇입니까?
키로 사용되는
Array
의 비원시적 인스턴스에 대한 참조를 저장해야 합니다. 다음 두 가지 예의 차이점에 유의하세요.ES2015 맵 키가
===
运算符一样。两个数组实例,即使它们包含相同的值,也不会以===
와 (거의) 서로 어떻게 비교되는지 이해하세요.이것을 시도해 보세요:
으아아아Map 클래스는 기본 클래스로 사용되기 때문에 재정의된
.get()
함수를 사용하여 하위 클래스를 구현할 수도 있습니다.(첫 번째 문장의 "거의"는 Map 키 동등성 비교가
Object.is()
를 통해 수행된다는 것을 반영하며 이는 일상적인 코딩에서는 거의 발생하지 않습니다. 기본적으로 JavaScript에서 동등성 테스트의 세 번째 변형입니다.)