精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

不想用Object和Array存儲數(shù)據(jù),你還有Set和Map

開發(fā) 前端
許多年來,程序員們一直使用Object和Array來存儲數(shù)據(jù),這種趨勢不僅僅局限于JavaScript。除了這兩個選項外,沒有其他選擇來存儲多個值和處理數(shù)據(jù)結(jié)構(gòu)。然而,在使用Object和Array時有幾個限制。

本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。

許多年來,程序員們一直使用Object和Array來存儲數(shù)據(jù),這種趨勢不僅僅局限于JavaScript。除了這兩個選項外,沒有其他選擇來存儲多個值和處理數(shù)據(jù)結(jié)構(gòu)。然而,在使用Object和Array時有幾個限制,例如:

  • Array可以存儲重復的元素。
  • 沒有像Array那樣找到Object長度的方法。
  • 只有字符串可以存儲在Object中,不記插入順序。
  • 開發(fā)人員必須根據(jù)用例選擇數(shù)組或?qū)ο蟆?/li>
  • 像Lodash這樣的第三方庫被用來增強數(shù)組的功能。

隨著2015年ES6的發(fā)布,情況開始好轉(zhuǎn)。ES6引入了對Map和Set的支持,旨在克服上述限制。

[[356741]]

什么是Set和Map?

如前所述,這兩個功能都是在JavaScript的ES6版本中引入的。Set是唯一元素的有序集合。“唯一元素”是最重要的,因為它意味著一個Set中不能存儲重復的元素。但是它沒有鍵-值對系統(tǒng)。

Map是Array和Object數(shù)據(jù)結(jié)構(gòu)的組合。它像Object一樣是鍵-值對的Set,但它也記住插入格式,并具有l(wèi)ength(.size)屬性。

Set的聲明和初始化:一個集合可以像這樣初始化。

  1. const set = new Set(); 

const set = new Set();

· 從Set中添加和刪除元素:你可以使用.add()方法輕松地將元素插入到集合中。

  1. const set = new Set();set.add('John');set.add('Martha')set.add('Bryan');set.add('John');//set = {'John','Martha','Bryan'} 

JavaScript中的Set借用了很多數(shù)學集合的屬性,并且只包含唯一的元素。刪除元素也非常簡單,使用.delete()方法刪除單個元素,或使用.clear()方法刪除所有元素。

  1. set.add('John');set.add('Martha')set.add('Bryan');set.delete('Martha')//set= {'John','Bryan'}set.clear(); // removes all the element 

· Set的大小:使用.size,你可以很容易地找到有用的Set的大小。

  1. set.add('a')set.add('b');set.add('c');console.log(set.size) // => 3 

· 訪問Set中的元素:Set在嘗試記錄或訪問其值時的方式不同。你可以記錄數(shù)組并查看元素,但這不適用于Set。

  1. var arr=[1,2,3];const set = new Set(arr);console.log(set) // => [objectSet]console.log(arr) // => (3) [1,2,3] 

為了訪問Set,我們需要一個SetIterator()來獲取所有的值。JavaScript提供了一個屬性.values()來獲取一個迭代器,然后我們可以將該迭代器與循環(huán)結(jié)合使用獲取所有的值。如以下代碼片段演示:

  1. var arr=[1,2,3];const set = new Set(arr);variterator=set.values()console.log(iterator.next().value) //1 

檢索所有元素更簡單的方法是使用.forEach(),如下所示:

  1. var arr=[1,2,3];const set = new Set(arr);set.forEach(v=>console.log(v)) 

輸出:

此外,你可以使用.has()方法檢查是否存在某個值,如果找到該元素,該方法將返回true。

  1. var arr=[1,2,3];const set = new Set(arr);console.log(set.has(1)); // true 

值得一提的是,盡管Set不支持鍵-值對元素,但keys()和entries()等方法對Set是可用的。

Set vs Array

Set和Array傾向于執(zhí)行和處理相同的操作,但存在一些差異。最大的區(qū)別是Set不能像Array那樣有重復項,而Set提供了一種更簡單的方法來刪除項。此外,Set的元素在插入順序上是可迭代的。

與數(shù)學集合一樣,JavaScript中的集合也可以用于執(zhí)行union和intersection等操作,這些操作可以在合并數(shù)據(jù)或在兩個Set中尋找公共元素時使用。

初始化和聲明Map:

與Set類似,Map也可以用同樣的方式聲明。

  1. const map = new Map(); 

從Map中添加和刪除元素:Map支持類似Object的鍵值對。因此,在增加價值的同時,我們也需要提供一個密鑰。這和我們在Set中看到的不一樣。

  1. const map = new Map();map.set('Name', 'iPhone'); // map.set(key,value)formatmap.set('Brand', 'Apple');map.set('Price', '$1000'); 

要從Map中刪除一個值,我們可以簡單地將鍵傳遞給.delete()屬性。

  1. const map = new Map();map.set('Name', 'iPhone'); map.set('Brand','Apple');map.set('Price', '$1000');map.delete('Price'); //removes the elementwith key 'Price' 

與Set類似,可以使用.clear()刪除所有元素。

  1. map.clear() // removes all the element 

Map的大小:使用.size可以很容易地檢索Map的大小(長度)。

  1. const map = new Map();map.set('Name', 'iPhone');map.set('Brand','Apple');map.set('Price', '$1000');console.log(map.size)//=> 3 

訪問Map中的元素:Map為我們提供了一個.get()方法,通過將鍵作為參數(shù)傳遞到方法中來快速獲取值。

  1. const map = new Map();map.set('Name', 'iPhone');map.set('Brand','Apple');map.set('Price', '$1000');console.log(map.get('Name'));//iPhoneconsole.log(map.get('Brand')); // Apple 

但是如果你只想要鍵、值,或者鍵和值都想要,該怎么辦呢?Map有.keys(),.values()和.entries()分別實現(xiàn)相同的功能。使用上面代碼中的相同Map:

  1. console.log(map.keys()); 
  2. // iterator {'Name','Brand',Price'}console.log(map.values()); 
  3. // iterator {'iPhone','Apple','$1000'}console.log(map.entries()); 
  4. //iterator {'Name':'iPhone','Brand':'Apple',Price':'$1000'} 

Map的迭代也非常簡單:

  1. //with for-each 
  2. map.forEach((value, key) => { 
  3.    console.log(`${key} is ${value} yearsold!`); 
  4. }); 
  5.  
  6.  
  7. // with for-of 
  8. for(const [key, value] of map) { 
  9.   console.log(`${key} : ${value}`); 

此外,你可以使用.has()屬性并傳遞鍵輕松地檢查元素是否存在。

  1. var map = new Map(); 
  2. map.set('age',19);console.log(map.has('age')) // true since 'age' key ispresent 

如果你決定將object轉(zhuǎn)換為map,JavaScript已經(jīng)搞定了。我們之前使用.entries()來獲取所有鍵-值對,但這次我們將使用針對Object的方法。

  1. const myObject= { 
  2.   'Age': '25', 
  3.   'Gender': 'Male', 
  4.   'Nationality': 'Australian' 
  5. }; 
  6.  
  7.  
  8. const myMap = new Map(Object.entries(myObject)); //object to mapconstanotherObject = Object.fromEntries(myMap) // map to object 

你可以輕松地將map轉(zhuǎn)換為object,如上所示。要將Map轉(zhuǎn)換為Array,可以使用array .from(myMap)。

Map vs Array &Objects

Map似乎解決了Array和Object的許多缺點,比如它能夠處理更復雜的操作。Map就像是Array和Object的混合體。它有一個類似array的size屬性,可以以鍵-值對格式存儲元素。除此之外,它還提供了.has()之類的方法來檢查元素是否存在,這可以節(jié)省大量時間。

而且,它不要求鍵必須是字符串類型。你甚至可以使用一個對象作為鍵來幫助你編寫更好的代碼。

雖然Array和Object已經(jīng)成為存儲集合和鍵-值對元素的事實上的標準,但通過引入Map和Set,你可以為代碼提供一種有趣的方法。Set和Map是JavaScript提供的用于存儲復雜數(shù)據(jù)結(jié)構(gòu)的新標準。

此外,使用這些數(shù)據(jù)結(jié)構(gòu)還消除了使用第三方庫(如Lodash)的需要,因為這些新的數(shù)據(jù)結(jié)構(gòu)默認提供了.has()和.delete()等方法。

[[356742]]

圖源:unsplash

Array和Object在任何意義上都不是過時的,不過使用Set和Map肯定是處理數(shù)據(jù)更好的方法,尤其是在構(gòu)建大型復雜應(yīng)用程序時。

 

責任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2024-11-11 17:20:52

2009-07-09 00:25:00

ScalaSet類Map類

2012-06-15 09:56:40

2024-04-02 08:50:08

Go語言react

2020-07-12 15:34:48

JavaScript開發(fā)技術(shù)

2025-01-22 09:21:46

2015-03-13 09:36:09

NULLnullptr

2020-10-22 10:55:55

數(shù)據(jù)結(jié)構(gòu)ES6前端

2021-06-25 10:18:08

JavaScript Array.map 巧技拾遺

2021-07-16 06:56:50

授權(quán)機制Session

2016-08-01 16:26:34

ES6集合

2018-07-24 09:28:18

存儲數(shù)據(jù)倉庫

2012-04-16 15:08:33

2017-08-21 21:31:16

雙活戴爾

2017-10-23 15:17:42

技術(shù)業(yè)務(wù)職位

2010-07-27 14:44:23

Flex Array

2024-03-04 06:37:55

TypeScript類型聲明靜態(tài)方法

2009-01-18 15:48:31

數(shù)據(jù)倉庫數(shù)據(jù)存儲OLTP

2022-02-09 16:02:26

Go 語言ArraySlice

2022-05-18 08:17:24

Java原子變量
點贊
收藏

51CTO技術(shù)棧公眾號

国产夫妻自拍一区| 久久婷婷av| 成人av在线网| 中文字幕日韩欧美精品在线观看| 147欧美人体大胆444| 国产毛片久久久久久久| 国精一区二区三区| 91精品一区二区三区综合在线爱| 日本电影亚洲天堂一区| 狠狠色综合色区| 久久中文字幕在线观看| 国产精品3区| 中文幕一区二区三区久久蜜桃| 国产91精品久久久久久久| 中文字幕在线观看91| 午夜激情在线| 懂色av中文一区二区三区| 久久久国产精品视频| 日本久久久久久久久久久久| 国产原创av在线| 丝袜a∨在线一区二区三区不卡| 日韩视频永久免费观看| 污网站免费在线| 91禁在线看| 91在线免费视频观看| 国产做受高潮69| jlzzjizz在线播放观看| 两个人看的在线视频www| 不卡一区二区在线| 国产精品亚洲аv天堂网| 日韩在线免费观看av| 久久综合偷偷噜噜噜色| 亚洲在线免费播放| 国产欧美一区二区三区不卡高清| 欧美三级韩国三级日本三斤在线观看| 欧美电影在线观看免费| 色综合天天综合网天天狠天天| 九色91在线视频| 无码人妻av免费一区二区三区| 亚洲桃色综合影院| 欧美中文字幕一区二区三区| 亚洲在线色站| 亚洲国产综合网| 99精品国产在热久久婷婷| 日韩精品免费看| 国产免费999| 成人看片免费| 99视频精品全部免费在线| 国产91在线播放九色快色| 成人欧美一区二区三区黑人一| 国产精品久久久久久av公交车| 色琪琪一区二区三区亚洲区| 一二三四视频社区在线| 国产精品秘入口| 国产乱码一区二区三区| 欧美亚洲激情在线| 国产精品美女毛片真酒店| 蜜桃tv一区二区三区| 欧美疯狂做受xxxx富婆| www插插插无码视频网站| 国产私人尤物无码不卡| 久久久久久免费| 91精品在线看| 啦啦啦免费高清视频在线观看| 北条麻妃国产九九九精品小说| 91精品国产91久久久久久一区二区| 日韩中字在线观看| 6699嫩草久久久精品影院| 亚洲一区二区精品视频| 神马影院午夜我不卡影院| 国产黄色片免费| 水蜜桃久久夜色精品一区的特点| 97国产在线视频| 少妇愉情理伦三级| 加勒比色老久久爱综合网| 欧美三级电影在线观看| 国产不卡一区二区视频| 欧美男男tv网站在线播放| 欧美日韩中文字幕在线视频| 最近中文字幕免费mv| 日本一二三区在线视频| 国产麻豆视频一区二区| 成人在线视频电影| 中文字幕自拍偷拍| 美女精品网站| 午夜精品久久久99热福利| 国产黄色片免费看| 国产精品www.| 久久久精品视频在线观看| 久久国产精品波多野结衣| 日韩精品欧美激情一区二区| 亚洲精品成人av| 丰满人妻一区二区三区53视频| 日本在线精品| 日本精品一级二级| 三级一区二区三区| 黄色精品视频| 日韩欧美一级二级三级久久久 | 999久久久精品国产| 亚洲美女性生活视频| 国产性生活毛片| 9l亚洲国产成人精品一区二三| 777午夜精品免费视频| 欧美性猛交久久久乱大交小说| 国产伦理精品| 亚洲aⅴ怡春院| 日本阿v视频在线观看| 亚洲黄色网址| 色香蕉成人二区免费| 久久久精品高清| 国产精品久久久久久久久久辛辛| 亚洲精品一区二区三区在线观看| 国产成人精品一区二区三区在线观看| 国产美女精品视频免费播放软件 | 蜜桃视频在线播放| 91丨porny丨户外露出| 精品欧美一区二区在线观看视频| 99视频在线观看地址| 国产精品国产自产拍高清av王其| 亚洲精品一区国产精品| 91在线导航| 黄色成人av网| 国产第一页视频| 欧美影视资讯| 亚洲国产精品久久久久| 一级特级黄色片| 女人天堂亚洲aⅴ在线观看| 欧美成人合集magnet| 久久久久久久蜜桃| 久久精品国产99久久6| 91免费的视频在线播放| 国产高清免费av在线| 精品福利在线视频| 99久久久无码国产精品性波多 | 国产妇女馒头高清泬20p多| 免费观看亚洲天堂| 久久九九亚洲综合| 一本色道久久综合精品婷婷| 久久精品国产免费| 香蕉久久免费影视| 秋霞国产精品| 中文字幕日韩高清| 真实的国产乱xxxx在线91| 久久综合狠狠综合久久综合88| 久久综合一区二区三区| 999在线视频| 在线影院国内精品| 国产肥白大熟妇bbbb视频| 999国产精品永久免费视频app| 国产成人精品午夜| 国产手机视频在线| 99久久国产综合精品麻豆| 欧美图片激情小说| 操欧美女人视频| 久久乐国产精品| 神马午夜电影一区二区三区在线观看| 久久久久9999亚洲精品| 国产第一页视频| 欧美久久综合网| 欧美日韩国产成人| 国产99久久久久久免费看| 国产精品一级黄| 强开小嫩苞一区二区三区网站 | 91中文字幕在线观看| 天天躁日日躁狠狠躁喷水| 五月婷婷久久丁香| 日本黄色网址大全| 欧美激情日韩| 国产精品一区二区三区观看| 日本美女在线中文版| 亚洲h精品动漫在线观看| 极品粉嫩小仙女高潮喷水久久| 99久久影视| 日韩美女激情视频| caoporn国产精品免费视频| 天天影视涩香欲综合网| 草草影院第一页| 理论片日本一区| 国产免费裸体视频| 四虎精品在线观看| 亚洲欧美www| 91福利免费视频| 久久精品免视看| 欧美成人高潮一二区在线看| 网红女主播少妇精品视频| 欧美激情一区二区三区成人 | 国产高潮流白浆| 免费在线观看视频一区| 久久久福利视频| 久久av日韩| 在线观看亚洲视频| av图片在线观看| 91亚洲精华国产精华精华液| 无人在线观看的免费高清视频| 亚洲精品午夜av福利久久蜜桃| 国产欧美一区二区视频| 欧美成人xxxx| 亚洲18私人小影院| 巨大荫蒂视频欧美另类大| 欧美视频日韩视频在线观看| 蜜桃精品成人影片| 精品亚洲aⅴ乱码一区二区三区| 日韩精品久久久免费观看| 成人免费短视频| 日韩电影中文字幕av| 这里只有精品6| 欧美日韩国产中文精品字幕自在自线| 美女久久久久久久久| 今天的高清视频免费播放成人| av一本久道久久波多野结衣| bt在线麻豆视频| 亚洲午夜av电影| 成人黄色片在线观看| 亚洲国产成人porn| 亚洲欧美日韩国产综合在线| 精品一区二区三区国产| 国产一区精品福利| 欧美与欧洲交xxxx免费观看| 91精选在线| 日韩欧美在线不卡| 天天看片中文字幕| 国产网站一区二区三区| yy6080午夜| 国产成人欧美日韩在线电影| www成人免费| 久久视频在线| 日韩欧美精品久久| 亚洲系列另类av| 国产精品一区二区a| 日本一区二区三区播放| 久久久久久久久电影| 国产在线高清视频| 国产一区二区动漫| 欧美伦理影视网| 日韩精品久久久久久久玫瑰园| 内射后入在线观看一区| 一本大道久久a久久综合婷婷| 欧美人妻精品一区二区三区| 亚洲视频在线一区观看| 国产在线免费av| 日本一区二区三区在线观看| 嫩草视频免费在线观看| 日本美女视频一区二区| 免费成人进口网站| 国产精品88久久久久久| 中文字幕黄色大片| 国产精品毛片视频| 国产精品成人品| 久久久久无码精品国产sm果冻 | 日韩在线一区二区三区四区| 在线综合视频播放| 国产精品特级毛片一区二区三区| 亚洲免费观看高清完整版在线观看熊| 欧美精品日韩在线| 丰满少妇久久久久久久| 免费观看黄网站| 国产成人综合在线观看| 亚洲成人激情小说| 国产成人亚洲综合色影视| 国产精品熟女一区二区不卡| 香蕉久久夜色精品国产| 自拍偷拍99| 亚洲欧美一级二级三级| 成人在线免费观看视频网站| 国产欧美高清视频在线| 亚洲最大福利网站| 一区二区亚洲视频| 国产日韩换脸av一区在线观看| av在线不卡免费| 91精品国产91久久久久福利| 999在线视频| 久久久精品免费| 成年男女免费视频网站不卡| 日韩av免费网站| 欧美成人福利| 国产精品污www一区二区三区| 欧美调教视频| 一区二区三区国| 国模大胆一区二区三区| 国产精品亚洲a| 狠狠色综合色综合网络| 又黄又色的网站| 国产亚洲欧洲一区高清在线观看| 日韩亚洲欧美中文字幕| 亚洲国产美女搞黄色| 夜夜躁日日躁狠狠久久av| 日韩欧美中文一区二区| 欧美日韩在线精品一区二区三区激情综 | 97在线看福利| av成人在线播放| 日韩av男人的天堂| 高清一区二区中文字幕| 精品欧美日韩在线| 国产精品成人a在线观看| 黄色一级片在线看| 蜜臀av一区二区在线观看| 国产一级二级av| 国产欧美一区二区精品久导航 | 国产日本欧美一区二区三区在线| 视频一区视频二区欧美| 热re99久久精品国产99热| 视频小说一区二区| 五月天在线免费视频| 亚洲主播在线| 少妇熟女视频一区二区三区 | 精品精品欲导航| 草草视频在线播放| 日韩精品资源二区在线| 国产黄色片在线观看| 久久久日本电影| 免费一级欧美在线观看视频| 久久国产主播精品| 欧美搞黄网站| 国产一伦一伦一伦| 精品亚洲国产成人av制服丝袜| 精品人妻一区二区三区香蕉| 亚洲乱码日产精品bd| 免费精品一区二区| 欧美三级在线播放| 完全免费av在线播放| 韩日精品视频一区| 人人人妻人人澡人人爽欧美一区| 一区二区高清在线| 国产视频一区二区三| 在线观看日韩视频| 日日夜夜天天综合| 国产精品视频自在线| 亚洲精品**不卡在线播he| 亚洲爆乳无码精品aaa片蜜桃| 久久国产精品99久久人人澡| 欧美日韩久久婷婷| 成人午夜又粗又硬又大| 国产精品久久不卡| 亚洲一区免费观看| 国产wwwwwww| 久久综合色88| 天堂√中文最新版在线| 国产精品区一区| 激情综合网址| 女性生殖扒开酷刑vk| 一卡二卡三卡日韩欧美| 国产乱码一区二区| 久久成年人免费电影| 国产精品麻豆| 男女裸体影院高潮| 国产精品中文字幕日韩精品| 手机在线免费看毛片| 日韩一级免费观看| 大桥未久在线播放| 国产专区一区二区| 国产日韩视频| 国产一区二区在线观看免费视频| 国产天堂亚洲国产碰碰| 日韩欧美国产另类| 在线播放国产精品| 国产精品99| 中文字幕一区二区三区四区五区 | 一区二区三区在线观看免费| 激情五月宗合网| 91在线观看免费视频| 极品国产91在线网站| 最近2019免费中文字幕视频三 | 日韩欧美午夜| 亚洲一区精品视频在线观看| 亚洲欧美一区二区三区久本道91| a级片在线播放| 97碰在线观看| 国产亚洲一卡2卡3卡4卡新区| 国产一级特黄a大片免费| 国产精品成人在线观看| www.蜜臀av| 1769国内精品视频在线播放| 国产亚洲欧美日韩在线观看一区二区| 中文字幕第88页| 一区二区三区在线高清| 日韩欧美一级大片| 久久精品电影网| 久久97精品| 岛国毛片在线播放| 亚洲国产wwwccc36天堂| 精品亚洲综合| 亚洲a在线播放| 99精品国产一区二区青青牛奶 | 亚洲激情网站免费观看| 天堂在线资源网| 国产男女猛烈无遮挡91| 亚洲福利免费| 国产三级黄色片| 日韩一区二区精品在线观看| 免费福利视频一区二区三区| 自拍偷拍亚洲色图欧美| 99re成人在线| 国产免费黄色网址| 欧美一区三区三区高中清蜜桃| 国产精品黑丝在线播放| 日韩精品一区二区三区高清免费| 欧美日韩日日摸| 无遮挡动作视频在线观看免费入口 | 三级网在线观看| 91蝌蚪porny|