ES6의 Map과 WeakMap에 대한 첫 번째 살펴보기

不言
풀어 주다: 2018-03-31 10:35:35
원래의
1538명이 탐색했습니다.

이 기사는 ES6의 Map 및 WeakMap과 공유됩니다. 도움이 필요한 친구들에게 도움이 되기를 바랍니다.

Map 객체는 키-값 쌍을 저장합니다. 모든 값(객체 또는 기본 요소)을 키 또는 값으로 사용할 수 있습니다.
지도 객체를 사용하여
let myMap=new Map();
let keyObj={},keyfunc=function(){},keysTring='hello word';
로그인 후 복사
set(key,value)를 사용하여 값 추가
myMap.set(keysTring,'keysTring的关联值')
myMap.set(keyfunc,'keyfunc的关联值')
myMap.set(keyObj,'keyObj的关联值')
로그인 후 복사
size를 사용하여 지도의 크기 가져오기
console.log(myMap.size)  //3
로그인 후 복사
get(key)를 사용하여 지도의 값 가져오기
console.log(myMap.get(keysTring)) //keysTring的关联值
console.log(myMap.get('hello word')) //keysTring的关联值


----------


console.log(myMap.get(keyfunc)) //keyfunc的关联值
console.log(function(){}===keyfunc)  //false 
console.log(myMap.get(function(){})) //undefined, 因为keyFunc !== function () {}


----------


console.log(myMap.get(keyObj)) //keyObj的关联值
console.log({}===keyObj)  //false 
console.log(myMap.get({})) //undefined 因为keyObj !== {}
로그인 후 복사
NaN을 키로 사용 of the map
myMap.set(NaN, "not a number");
console.log(myMap.get(NaN))  //not a number

var otherNaN=Number('foo');
console.log(otherNaN)  //NaN
console.log(myMap.get(otherNaN))  //not a number 也可以取值
로그인 후 복사
Map 및 배열 객체의 관계
let kvArray = [["key1", "value1"], ["key2", "value2"]];
var myMap1 = new Map(kvArray);
//使用映射对象常规的构造函数将一个二维键值对数组对象转换成一个映射关系
console.log(myMap1) //Map { 'key1' => 'value1', 'key2' => 'value2' }
console.log(myMap1.get('key1'))  //value1
console.log([...myMap1]) //[ [ 'key1', 'value1' ], [ 'key2', 'value2' ] ]
로그인 후 복사
forEach()
var myMap2 = new Map(kvArray);
myMap2.forEach((value,index)=>{
    console.log(value+'---'+index)  //value1---key1   value2---key2
})
로그인 후 복사
for..of
var myMap3 = new Map(kvArray);
for(var a of myMap3){
    console.log(a)      //[ 'key1', 'value1' ] [ 'key2', 'value2' ]
}

for(var [key,value] of myMap3){
    console.log('key:'+key+', value:'+value)  //key:key1, value:value1 key:key2, value:value2
}
로그인 후 복사
clear() 메소드는 Map 객체의 모든 요소를 ​​제거합니다.
let clearMap=new Map();
clearMap.set('hello','word');
console.log(clearMap.size)  //1
clearMap.clear();   //清空
console.log(clearMap.size)  //0
로그인 후 복사
delete(key)는 지도 객체에서 지정된 요소를 제거하는 데 사용됩니다.
let delMap=new Map();
delMap.set('hi','word');
delMap.set('hello','word');
console.log(delMap)  //Map { 'hi' => 'word', 'hello' => 'word' }
delMap.delete('hi'); //执行删除操作
console.log(delMap)  //Map { 'hello' => 'word' }
로그인 후 복사
has(key)는 지정된 요소가 맵에 존재하는지 여부를 나타내는 부울 값을 반환합니다.
let hasMap=new Map();
hasMap.set('hi','word');
hasMap.set('hi','hello word');
console.log(hasMap)  //Map { 'hi' => 'hello word' }   一样的key后面的value会覆盖前面的值
console.log(hasMap.has('hi')); //true
console.log(hasMap.has('hello')); //false
로그인 후 복사
entries()는 맵 객체를 반복자로 변환합니다.
let entriesMap=new Map();
entriesMap.set('a','A');
entriesMap.set('b','B');
let entries=entriesMap.entries();
console.log(entries.next()); //{ value: [ 'a', 'A' ], done: false }
console.log(entries.next().value); //[ 'b', 'B' ]
console.log(entries.next()); //{ value: undefined, done: true }
로그인 후 복사
values()는 새 Iterator 객체를 반환합니다.
let valueMap=new Map();
valueMap.set('a','A');
valueMap.set('b','B');
let values=valueMap.values();
console.log(values.next())  //{ value: 'A', done: false }
console.log(values.next())  //{ value: 'B', done: false }
console.log(values.next())  //{ value: undefined, done: true }
로그인 후 복사
A WeakMap 객체는 키가 약하게 참조되는 키/값 쌍의 컬렉션입니다. 키는 객체여야 하며 값은 임의적일 수 있습니다. WeakMap은 4가지 방법만 제공합니다:
1.delete(key); 根据key删除value
2.get(key);根据key获取value
3.has(key) 根据key检查是不是存在value
4.set(key,value) 根据key设置value

let weakMap=new WeakMap();
weakMap.set('hi','word')  //异常   因为WeakMap的键只能是个对象
let obj1={};
weakMap.set(obj1,'word')  //正常
console.log(weakMap)   //WeakMap {}
console.log(weakMap.get(obj1))  //word
console.log(weakMap.has(obj1))  //true
console.log(weakMap.delete(obj1))  //true
로그인 후 복사
관련 권장 사항:

ES6의 새로운 기능에 대한 자세한 소개 - JavaScript의 Map 및 WeakMap 객체의 코드 예제


위 내용은 ES6의 Map과 WeakMap에 대한 첫 번째 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!