網站首頁 編程語言 正文
一、Map對象
Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。
Map中的鍵值是有序的。
let myMap = new Map();
myMap.set("23","喬丹");
myMap.set("33","皮蓬");
let name = myMap.get("33");
console.log(name); //皮蓬
let has = myMap.has("24"); //查找是否含有此鍵
console.log(has); //false
Map的迭代:
let myMap = new Map();
myMap.set("23","喬丹");
myMap.set("33","皮蓬");
myMap.set("99","羅德曼");
//循環鍵
for (let key of myMap.keys()) {
console.log(key);
}
//循環值
for (let value of myMap.values()) {
console.log(value);
}
//循環鍵和值
for (let [key, value] of myMap) {
console.log(key + " = " + value);
}
//或
for (let [key, value] of myMap.entries()) {
console.log(key + " = " + value);
}
//使用forEach循環
myMap.forEach(function(value,key){
console.log(key + "=" + value);
},myMap);
Map 與 Array的轉換:
//二維數組轉換成map對象
let arr = [[23,"喬丹"],[33,"皮蓬"],[99,"羅德曼"]];
let myMap = new Map(arr);
for (let [key, value] of myMap) {
console.log(key + " = " + value);
}
//map對象轉換成二維數組
let outArr = Array.from(myMap);
console.log(outArr);
Map的克隆:
let myMap1 = new Map([[23,"喬丹"],[33,"皮蓬"],[99,"羅德曼"]]);
let myMap2 = new Map(myMap1);
for (let [key, value] of myMap2) {
console.log(key + " = " + value);
}
Map的合并(合并兩個 Map 對象時,如果有重復的鍵值,則后面的會覆蓋前面的)
let myMap1 = new Map([[23,"喬丹"],[33,"皮蓬"],[99,"羅德曼"]]);
let myMap2 = new Map([[23,"詹姆斯"],[24,"科比"],[11,"姚明"]]);
let myMap = new Map([...myMap1,...myMap2]); //合并之后詹姆斯會替換喬丹
for (let [key, value] of myMap) {
console.log(key + " = " + value);
}
二、Set對象
Set 對象允許你存儲任何類型的唯一值,無論是原始值或者是對象引用。
Set 對象存儲的值總是唯一的,所以需要判斷兩個值是否恒等。有幾個特殊值需要特殊對待:
(1) +0 與 -0 在存儲判斷唯一性的時候是恒等的,所以不重復;
(2) undefined 與 undefined 是恒等的,所以不重復;
(3) NaN 與 NaN 是不恒等的,但是在 Set 中只能存一個,不重復。
let mySet = new Set();
mySet.add(1);
mySet.add("hello"); //這里體現了類型的多樣性
mySet.add(2);
mySet.add(1); //這里添加不了,這里體現了值的唯一性
console.log(mySet); //{1,"hello",2}
console.log(mySet.has(3)); //false, 是否含有3
以下代碼體現了對象之間引用不同不恒等,即使值相同,Set 也能存儲
let mySet = new Set();
let o = {a: 1, b: 2};
mySet.add(o);
mySet.add({a: 1, b: 2});
console.log(mySet);
Set類型轉換:
//Array 轉 Set
let arr = ["喬丹","皮蓬","羅德曼"];
let mySet = new Set(arr);
console.log(mySet);
//Set轉Array(使用...)
let mySet = new Set();
mySet.add("喬丹");
mySet.add("皮蓬");
mySet.add("羅德曼");
let arr = [...mySet];
console.log(arr);
//字符串轉Set(注:Set中toString方法是不能將Set轉換成String)
let mySet = new Set("hello");
console.log(mySet); //h e l o (兩個l只出現一次)
Set對象的作用:
//數組去重復
let mySet = new Set([1,2,1,2,3,3,4,5,6,4,7]);
let arr = [...mySet];
console.log(arr); //1,2,3,4,5,6,7
//數組求并集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
let union = new Set([...a, ...b]);
let arr = [...union];
console.log(arr); //1, 2, 3, 4
//數組求交集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
let intersect = new Set([...a].filter(p=>b.has(p)));
let arr = [...intersect];
console.log(arr); //2, 3
原文鏈接:https://www.cnblogs.com/wml-it/p/15967783.html
- 上一篇:ES6基礎語法之數組拓展_基礎知識
- 下一篇:ES6基礎語法之對象介紹_基礎知識
相關推薦
- 2022-03-06 C#中List用法介紹詳解_C#教程
- 2022-09-16 C#中C/S端實現WebService服務_C#教程
- 2023-02-25 pandas?loc?iloc?ix用法詳細分析_python
- 2022-06-18 Python周期任務神器之Schedule模塊使用詳解_python
- 2022-12-03 init?output?stream初始化輸出流源碼分析_Android
- 2022-07-21 react 高價組件HOC實現組件復用
- 2022-02-20 Flutter TextFormField 監聽focus、blur事件
- 2022-08-04 react使用mobx封裝管理用戶登錄的store示例詳解_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支