ES6 학습 의 길 9 - --- Map 데이터 구조
맵 데이터 구조 가 무엇 입 니까?
Map 데이터 구 조 는 대상 과 유사 하고 키 값 이 맞 는 집합 이지 만 '키' 의 범 위 는 문자열 에 국한 되 지 않 으 며 각종 유형의 값 (대상 포함) 을 키 로 사용 할 수 있 습 니 다.실례:
//ES5:
var obj = {},arr = {'a':1};
obj[arr] = 'Array';
console.log(obj);//{'[object Object]':'Array'}
//ES6:
let map = new Map(),obj = {'a':1};
map.set(obj,'Array');
console.log(map);//{{…} => "Array"}
map.get(obj);//"Array"
map.has(obj);//true
map.delete(obj);//true
map.has(obj);//false
위의 인 스 턴 스 를 통 해 알 수 있 듯 이 ES5 때 대상 의 키 값 은 모두 문자열 이 고 문자열 이 아니라면 암시 적 으로 문자열 로 변환 되 며 저 장 된 결 과 는 최초의 취지 가 아 닙 니 다.map 데이터 구 조 는 키 값 을 여러 종류의 값 으로 만 드 는 것 입 니 다.
맵 을 만 들 고 구성원 의 형식 을 초기 화 합 니 다.
맵 은 구조 함수 로 서 하나의 배열 을 매개 변수 로 받 아들 일 수 있 습 니 다.이 배열 의 구성원 은 키 값 이 맞다 는 것 을 나타 내 는 배열 이다.
실례:
let map = new Map([
['autnor', 'Rattenking'],
['age', '26'],
['sex','gentleman']
]);
map.size // 3
map.has('autnor'); // true
map.get('autnor'); // "Rattenking"
map.has('age'); // true
map.get('age'); //"26"
map.has('sex'); // true
map.get('sex'); //"gentleman"
console.log(map);//{"autnor" => "Rattenking", "age" => "26", "sex" => "gentleman"}
맵 초기 데이터 의 원 리 를 실현 하 다
let arr = [
['autnor', 'Rattenking'],
['age', '26'],
['sex','gentleman']
]
let map = new Map();
arr.forEach(current => map.set(current[0],current[1]));
console.log(map);//{"autnor" => "Rattenking", "age" => "26", "sex" => "gentleman"}
주의 사항
1. Iterator 인 터 페 이 스 를 가지 고 모든 구성원 이 하나의 이중 요소 인 배열 의 데이터 구 조 는 Map 구조 함수 의 매개 변수 로 할 수 있다.
let set = new Set([['autnor', 'Rattenking'],['age', '26']]);
let map = new Map(set);
console.log(map);//{"autnor" => "Rattenking", "age" => "26"}
2. 같은 키 에 여러 번 값 을 부여 하면 뒤의 값 은 앞의 값 을 덮어 씁 니 다.
let map = new Map();
map.set('autnor','Rattenking');
map.set('autnor','Stone');
map.get('autnor');//"Stone"
let map = new Map([['a',1]]);
map.get('a');//1
map.get('b');//undefined
4. 같은 대상 에 대한 인용 만 이 맵 구 조 를 같은 키 로 간주한다.
let map = new Map();
map.set(['autnor'],'Rattenking');
map.get(['autnor']);//undefined
5. 같은 이치 로 미 룰 수 있 습 니 다. 같은 값 의 두 인 스 턴 스 는 Map 구조 에서 두 개의 키 로 여 겨 집 니 다.
let map = new Map();
let arr1 = ['autnor', 'Rattenking'];
let arr2 = ['autnor', 'Rattenking'];
map
.set(arr1,'Rattenking')
.set(arr2,'Stone');
console.log(map);//{Array(2) => "Rattenking", Array(2) => "Stone"}
map.get(arr1);//"Rattenking"
map.get(arr2);//"Stone"
결론: 맵 의 키 는 실제 메모리 주소 와 연결 되 어 있 으 며 메모리 주소 가 다 르 면 두 개의 키 로 간주 합 니 다.이것 은 동명 속성 충돌 (clash) 문 제 를 해결 합 니 다. 우리 가 다른 사람의 라 이브 러 리 를 확장 할 때 대상 을 키 이름 으로 사용 하면 자신의 속성 과 원작 자의 속성 동명 이인 을 걱정 하지 않 아 도 됩 니 다.
6. NaN 은 엄격 하지 않 지만 맵 에 서 는 같은 키 값 으로 여 겨 집 니 다.다른 키 값 은 엄격 한 동일 (= = =) 에 따라 같은 키 값 인지 아 닌 지 를 판단 합 니 다.
let map = new Map();
NaN === NaN//false
map.set(NaN,1);
map.get(NaN);//1
-0 === 0 && 0 === +0 && -0 === +0//true
map.set(-0,'num');
map.get(+0);//'num'
undefined === null//false
map.set(undefined, undefined);
map.set(null, null);
map.get(undefined);//undefined
map.get(null);//null
true === 'true'//false
map.set(true,'bool');
map.get('true');//undefined
Map 실례 의 조작 속성 과 방법
Map 실례 를 옮 겨 다 니 는 방법
요약:
기타
나의 블 로그, 교 류 를 환영 합 니 다!
나의 CSDN 블 로그, 교 류 를 환영 합 니 다!
위 챗 애플 릿 칼럼
전단 필기 란
위 챗 애플 릿 일부 고 덕 지도 기능 구현 데모 다운로드
위 챗 애플 릿 이 MUI 의 일부 효 과 를 구현 하 는 데모 다운로드
위 챗 애플 릿 MUI 구현 GIT 프로젝트 주소
위 챗 애플 릿 인 스 턴 스 목록
전단 노트 목록
게임 목록
posted @
2017 - 12 - 14 13: 29 뉴 먼 리 읽 기
...) 댓 글 (
...) 모음 집 편집
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.