国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 厲害了,一個更智能的 JavaScript 映射器:array.flatMap()

厲害了,一個更智能的 JavaScript 映射器:array.flatMap()

2022-01-25 22:36大遷世界前端小智 js教程

array.map() 是一個非常有用的映射函數:它接收一個數組和一個映射函數,然后返回一個新的映射數組。

array.map() 是一個非常有用的映射函數:它接收一個數組和一個映射函數,然后返回一個新的映射數組。

然而,有一個替代 array.map()的方法:array.flatMap()(從ES2019開始可用)。這個方法給了我們映射的能力,但也可以在生成的映射數組中刪除甚至添加新的項目。

1. 更加智能的映射器

有一個數字數組,我們要如何創建一個新的數組,使用每個數字加倍?

使用array.map()函數是一個好方法。

const numbers = [0, 3, 6];
const doubled = numbers.map(n => n * 2);
console.log(doubled); // logs [0, 6, 12]

地址:https://jsfiddle.net/dmitri_pavlutin/7g5fz93y/

numbers.map(number => 2 * number) 將 number 數組映射到一個新的數組,其中每個數字都被翻倍。

對于需要一對一映射的情況,也就是說,映射后的數組與原始數組的項數相同,array.map()的效果非常好。

但如果我們需要將一個數組的數字翻倍,同時跳為0的項,該怎么辦?

直接使用 array.map() 是不可能的,因為該方法總是創建一個映射的數組,其項數與原數組相同。但是我們可以使用 array.map()和 array.filter() 的組合。

const numbers = [0, 3, 6];
const doubled = numbers
  .filter(n => n !== 0)
  .map(n => n * 2);
console.log(doubled); // logs [6, 12]

事例地址:https://jsfiddle.net/dmitri_pavlutin/cvtjyLpo/

array.map()和 array.filter() 可以解決問題,但有沒有更簡短的方法?

必須滴。使用 array.flatMap() 方法,只需調用一個方法就可以執行映射和刪除項目。

const numbers = [0, 3, 6];
const doubled = numbers.flatMap(number => {
  return number === 0 ? [] : [2 * number];
});
console.log(doubled); // logs [6, 12]

事例地址:https://jsfiddle.net/dmitri_pavlutin/j945qunz/

通過只使用 numbers.flatMap(),你可以將一個數組映射到另一個數組,但也可以從映射中跳過某些元素。

接著,我們來更詳細地看看 array.flatMap()是如何工作的。

2. array.flatMap()

array.flatMap() 函數接受一個回調函數作為參數并返回一個新的映射數組

const mappedArray = array.flatMap((item, index, origArray) => {
  // ...
  return [value1, value2, ..., valueN];
}[, thisArg]);

回調函數在原數組中的每個iteam上被調用,有3個參數:當前項、索引和原數組。然后,回調函數返回的數組被扁平化了1層,得到的項目被添加到映射的數組中。

此外,該方法還接受第二個可選參數,表示回調內部的 this 值。

使用 array.flatmap()最簡單的方法是將包含項目的數組扁平化

const arrays = [[2, 4], [6]];
const flatten = arrays.flatMap(item => item);
console.log(flatten); // logs [2, 4, 6]

事例地址:https://jsfiddle.net/dmitri_pavlutin/5rwvcz17/

但是array.flatMap()除了簡單的扁平化之外,還可以做更多的事情。通過控制從回調中返回的數組項的數量:

  • 通過返回一個空數組從結果數組中刪除該項
  • 通過返回一個帶有一個新值的數組 [newValue] 來修改映射的項
  • 通過返回一個包含多個值的數組來添加新項: [newValue1, newValue2, ...]

例如,正如你在上一節中所看到的,可以通過將項目加倍來創建一個新的數組,但同時也要刪除 0。

const numbers = [0, 3, 6];
const doubled = numbers.flatMap(number => {
  return number === 0 ? [] : [2 * number];
});
console.log(doubled); // logs [6, 12]

現在,我們來看下它是怎么工作的。

如果當前項為 0,回調函數返回一個空數組 []。這意味著當被扁平化時,空數組[]沒有提供任何值。

如果當前迭代項非零,則返回 [2 * number]。當扁平[2 * number]數組時,結果數組中只添加2 * number。

你也可以使用 array.flatMap()來增加映射的數組中的項目數量。

例如,下面的代碼片段通過添加兩倍和三倍的數字將一個數字數組映射到一個新數組:

const numbers = [1, 4];
const trippled = numbers.flatMap(number => {
  return [number, 2 * number, 3 * number];
});
console.log(trippled);
// logs [1, 2, 3, 4, 8, 12]

事例地址:https://jsfiddle.net/dmitri_pavlutin/k7p2x1ar/

3: 總結

如果你想把一個數組映射到一個新的數組中,同時又能控制你想在新的映射數組中添加多少項,那么 array.flatMap() 方法就是一個好辦法。

array.flatMap(callback) 的回調函數被調用,有3個參數:當前迭代的項、索引和原始數組。然后,從回調函數返回的數組在1層深處被扁平化,得到的項目被插入到所產生的映射數組中。

~完,我是刷碗智,新的一年我們一起洗刷刷!!!!!!

作者:Dmitri Pavlutin 譯者:前端小智 來源:dmitripavlutin 原文:https://dmitripavltin.com/javascrit-array-flatmap/

文章來源:https://mp.weixin.qq.com/s/rItr7VLS8ItMTl0THqZUOg

延伸 · 閱讀

精彩推薦
  • js教程原生js實現下拉框選擇組件

    原生js實現下拉框選擇組件

    這篇文章主要為大家詳細介紹了原生js實現下拉框選擇組件的開發,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    蒲公英芽4422022-01-05
  • js教程JavaScript中layim之整合右鍵菜單的示例代碼

    JavaScript中layim之整合右鍵菜單的示例代碼

    這篇文章主要介紹了JavaScript中layim之整合右鍵菜單的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以...

    踮腳敲代碼11512022-01-19
  • js教程NestJs使用Mongoose對MongoDB操作的方法

    NestJs使用Mongoose對MongoDB操作的方法

    這篇文章主要介紹了NestJs使用Mongoose對MongoDB操作的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    ragga-time3932022-01-22
  • js教程JavaScript Html實現移動端紅包雨功能頁面

    JavaScript Html實現移動端紅包雨功能頁面

    這篇文章主要為大家詳細介紹了JavaScript Html實現移動端紅包雨功能頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考...

    Jeslie-He4832021-12-29
  • js教程javascript實現數字時鐘效果

    javascript實現數字時鐘效果

    這篇文章主要為大家詳細介紹了javascript實現數字時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    一顆不甘墜落的流星11862022-01-17
  • js教程微信小程序onShareTimeline()實現分享朋友圈

    微信小程序onShareTimeline()實現分享朋友圈

    這篇文章主要給大家介紹了關于微信小程序onShareTimeline()實現分享朋友圈的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定...

    遠航_6232021-12-27
  • js教程JavaScript實現滾動加載更多

    JavaScript實現滾動加載更多

    這篇文章主要為大家詳細介紹了JavaScript實現滾動加載更多,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    予傾9922021-12-20
  • js教程原生js實現無縫輪播圖效果

    原生js實現無縫輪播圖效果

    這篇文章主要為大家詳細介紹了原生js實現無縫輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    搬磚大法7392022-01-10
主站蜘蛛池模板: 在线观看的av| 婷婷色av| 99视频在线免费观看 | 成人欧美一区二区三区在线播放 | 久久亚洲一区二区 | 中文字幕日韩视频 | 91福利资源站 | av在线天堂| 久久美女视频 | 99精品国产一区二区青青牛奶 | 午夜欧美| 九色在线 | 在线观看午夜 | 久久男人天堂 | 国产综合精品 | 成人区精品一区二区婷婷 | 欧美激情五月 | 国产精品美女久久久久久久网站 | 亚洲成人av在线 | 久久精品色欧美aⅴ一区二区 | 极品久久 | 国产精品成人在线 | 亚洲欧美精品 | 国产在线不卡一区 | 国产精品视频一区二区三区四 | 老丁头电影在线观看 | 亚洲一区 中文字幕 | 大桥未久亚洲精品久久久强制中出 | 中文字幕影院 | 久久精品国产一区二区三区不卡 | av黄色影院 | 麻豆乱码国产一区二区三区 | 中文字幕免费看 | av电影免费观看 | 激情综合五月天 | 精品综合99久久久久久www | 午夜视频国产 | 亚洲视频综合 | 一区二区三区影视 | 亚洲人人射 | 欧美aaa级 |