最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中Map遍歷方法代碼示例

 更新時(shí)間:2023年11月08日 11:07:20   作者:科學(xué)熊  
這篇文章主要給大家介紹了關(guān)于JavaScript中Map遍歷方法的相關(guān)資料,Map是一組鍵值對的結(jié)構(gòu),具有極快的查找速度,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

Map 結(jié)構(gòu)原生提供三個(gè)遍歷器生成函數(shù)和一個(gè)遍歷方法。

  • Map.prototype.keys():返回鍵名的遍歷器。
  • Map.prototype.values():返回鍵值的遍歷器。
  • Map.prototype.entries():返回所有成員的遍歷器。
  • Map.prototype.forEach():遍歷 Map 的所有成員。

需要特別注意的是,Map 的遍歷順序就是插入順序。

const map = new Map([
  ['F', 'no'],
  ['T',  'yes'],
]);

for (let key of map.keys()) {
  console.log(key);
}
// "F"
// "T"

for (let value of map.values()) {
  console.log(value);
}
// "no"
// "yes"

for (let item of map.entries()) {
  console.log(item[0], item[1]);
}
// "F" "no"
// "T" "yes"

// 或者
for (let [key, value] of map.entries()) {
  console.log(key, value);
}
// "F" "no"
// "T" "yes"

// 等同于使用map.entries()
for (let [key, value] of map) {
  console.log(key, value);
}
// "F" "no"
// "T" "yes"

上面代碼最后的那個(gè)例子,表示 Map 結(jié)構(gòu)的默認(rèn)遍歷器接口(Symbol.iterator屬性),就是entries方法。

map[Symbol.iterator] === map.entries
// true

Map 結(jié)構(gòu)轉(zhuǎn)為數(shù)組結(jié)構(gòu),比較快速的方法是使用擴(kuò)展運(yùn)算符(…)。

const map = new Map([
  [1, 'one'],
  [2, 'two'],
  [3, 'three'],
]);

[...map.keys()]
// [1, 2, 3]

[...map.values()]
// ['one', 'two', 'three']

[...map.entries()]
// [[1,'one'], [2, 'two'], [3, 'three']]

[...map]
// [[1,'one'], [2, 'two'], [3, 'three']]

結(jié)合數(shù)組的map方法、filter方法,可以實(shí)現(xiàn) Map 的遍歷和過濾(Map 本身沒有map和filter方法)。

const map0 = new Map()
  .set(1, 'a')
  .set(2, 'b')
  .set(3, 'c');

const map1 = new Map(
  [...map0].filter(([k, v]) => k < 3)
);
// 產(chǎn)生 Map 結(jié)構(gòu) {1 => 'a', 2 => 'b'}

const map2 = new Map(
  [...map0].map(([k, v]) => [k * 2, '_' + v])
    );
// 產(chǎn)生 Map 結(jié)構(gòu) {2 => '_a', 4 => '_b', 6 => '_c'}

此外,Map 還有一個(gè)forEach方法,與數(shù)組的forEach方法類似,也可以實(shí)現(xiàn)遍歷。

map.forEach(function(value, key, map) {
  console.log("Key: %s, Value: %s", key, value);
});

forEach方法還可以接受第二個(gè)參數(shù),用來綁定this。

const reporter = {
  report: function(key, value) {
    console.log("Key: %s, Value: %s", key, value);
  }
};

map.forEach(function(value, key, map) {
  this.report(key, value);
}, reporter);

上面代碼中,forEach方法的回調(diào)函數(shù)的this,就指向reporter。

附:Map的使用和entry相關(guān)類型查看

map = new Map();  // 構(gòu)造Map對象。
Map(0) {}
map.size  // 大小為0
0
map.set(1, "one").set(2, "two").set(3, "three");  // 增加鍵值對
Map(3) {1 => "one", 2 => "two", 3 => "three"}
map.size  // 大小為3
3
entries = map.entries();  // 獲取鍵值對的`Map Iterator`對象
MapIterator {1 => "one", 2 => "two", 3 => "three"}
Object.prototype.toString.call(entries) // 類型為`MapIterator`。
"[object Map Iterator]"
entryObj = entries.next(); // 調(diào)用next(),返回一個(gè)entryObj,是個(gè)對象{value:數(shù)組, done:false}。
{value: Array(2), done: false}
Object.prototype.toString.call(entryObj)
"[object Object]"
entry = entryObj.value  // 對象的value屬性是一個(gè)數(shù)組,長度為2。
(2) [1, "one"]
Object.prototype.toString.call(entry)
"[object Array]"
entry
(2) [1, "one"]
console.log(entry[0], entry[1])
VM7998:1 1 "one"

總結(jié)

到此這篇關(guān)于JavaScript中Map遍歷方法的文章就介紹到這了,更多相關(guān)js Map遍歷方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • window.opener用法和用途實(shí)例介紹

    window.opener用法和用途實(shí)例介紹

    window.opener,是通過window.open打開子窗體的父窗體的引用,下面為大家詳細(xì)介紹下其具體的使用方法,感興趣的朋友可以參考下
    2013-08-08
  • 使用bootstrap typeahead插件實(shí)現(xiàn)輸入框自動(dòng)補(bǔ)全之問題及解決辦法

    使用bootstrap typeahead插件實(shí)現(xiàn)輸入框自動(dòng)補(bǔ)全之問題及解決辦法

    這篇文章主要介紹了使用bootstrap typeahead插件實(shí)現(xiàn)輸入框自動(dòng)補(bǔ)全之問題及解決辦法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • vue2.x的深入學(xué)習(xí)--關(guān)于h函數(shù)的說明

    vue2.x的深入學(xué)習(xí)--關(guān)于h函數(shù)的說明

    下面小編就為大家分享一篇基于h函數(shù)詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-08-08
  • JavaScript中函數(shù)的四種調(diào)用方式總結(jié)

    JavaScript中函數(shù)的四種調(diào)用方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了JavaScript中函數(shù)的四種調(diào)用方式,文中的示例代碼講解詳細(xì),對我們深入掌握J(rèn)avaScript有一定的幫助,需要的可以參考下
    2023-10-10
  • js實(shí)現(xiàn)向右橫向滑出的二級菜單效果

    js實(shí)現(xiàn)向右橫向滑出的二級菜單效果

    這篇文章主要介紹了js實(shí)現(xiàn)向右橫向滑出的二級菜單效果,涉及javascript鼠標(biāo)事件及頁面元素的隱藏與顯示實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 用js格式化金額可設(shè)置保留的小數(shù)位數(shù)

    用js格式化金額可設(shè)置保留的小數(shù)位數(shù)

    這篇文章主要介紹了如何用js格式化金額并設(shè)置保留的小數(shù)位數(shù),需要的朋友可以參考下
    2014-05-05
  • 微信小程序后臺持續(xù)定位功能使用詳解

    微信小程序后臺持續(xù)定位功能使用詳解

    這篇文章主要介紹了微信小程序后臺持續(xù)定位功能使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 基于JS模仿windows文件按名稱排序效果

    基于JS模仿windows文件按名稱排序效果

    這篇文章主要介紹了基于JS實(shí)現(xiàn)模仿windows文件按名稱排序的相關(guān)資料,主要是對數(shù)字的處理操作,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 淺析對JS中方法unshift和push方法的理解

    淺析對JS中方法unshift和push方法的理解

    JavaScript中的`unshift`和`push`方法用于在數(shù)組的開始和結(jié)尾添加元素,它們會(huì)直接修改原數(shù)組并返回新的數(shù)組長度,本文介紹JS中方法unshift和push方法的相關(guān)知識,感興趣的朋友一起看看吧
    2024-12-12
  • 如何改進(jìn)javascript代碼的性能

    如何改進(jìn)javascript代碼的性能

    在web應(yīng)用中,應(yīng)用了大量的Javascript,因此代碼的執(zhí)行效率變得尤為重要,也就是性能!為了提高JS的性能,我們應(yīng)該掌握一些基本的性能優(yōu)化方式,并讓它成為我們書寫代碼的習(xí)慣。下面介紹幾種優(yōu)化性能的方式,很多初學(xué)者甚至有經(jīng)驗(yàn)的開發(fā)者也會(huì)忽略,希望對你有幫助
    2015-04-04

最新評論

汕尾市| 通河县| 肃南| 洪洞县| 呼伦贝尔市| 延吉市| 兰溪市| 蒙自县| 镇远县| 盐亭县| 雷波县| 通道| 长子县| 东平县| 铜川市| 务川| 万全县| 防城港市| 开阳县| 安宁市| 咸阳市| 汉阴县| 福州市| 德化县| 郸城县| 塔河县| 榆树市| 建阳市| 姚安县| 永平县| 从江县| 黑龙江省| 桂阳县| 新宁县| 宝应县| 张家川| 渭源县| 专栏| 米脂县| 黄浦区| 北碚区|