js中map()函數(shù)的使用案例詳解
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
前言
關(guān)鍵詞:map
項目中我們常常會遇到要對后端返回的數(shù)據(jù)進行修改,從而達到符合我們前端開發(fā)人員的需要,其中map是常用到的對數(shù)組元素進行修改的重要函數(shù)。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、概念
map() 方法定義在JavaScript的Array中,它返回一個新的數(shù)組,數(shù)組中的元素為原始數(shù)組調(diào)用函數(shù)處理后的值。值得注意的是:1、map()函數(shù)不會對空數(shù)組進行檢測;2、map()函數(shù)不會改變原始數(shù)組,它形成的是 一個新的數(shù)組
二、相關(guān)語法
array.map(function(currentValue, index, arr), thisIndex)
—
參數(shù)說明:
- function(currentValue, index, arr):必須。為一個函數(shù),數(shù)組中的每個元素都會執(zhí)行這個函數(shù)。其中函數(shù)參數(shù):
- currentValue:必須。表述當(dāng)前元素的的值(item)
- index:可選。當(dāng)前元素的索引也就是第幾個數(shù)組元素。
- arr:可選。當(dāng)前元素屬于的數(shù)組對象
- thisValue:可選。對象作為該執(zhí)行回調(diào)時使用,傳遞給函數(shù),用作"this"的值
三、示例
例1:對原數(shù)組元素進行平方后再賦值給新的數(shù)組
let array = [1, 2, 3, 4, 5]; let newArray = array.map((item) => { return item * item; }) console.log(newArray) // [1, 4, 9, 16, 25]
例2:將int類型的數(shù)據(jù)換成字符串類型
this.tableData = list.map(function (item) { if (item.leaseStatus === 0) { item.leaseStatus = '已租'; } else if (item.leaseStatus === 1) { item.leaseStatus = '未租'; } else if (item.leaseStatus === 2) { item.leaseStatus = '已租'; } if (res.data.data === null) { item = '暫無記錄'; } return item; });
選擇Object還是Map
(1)內(nèi)存占用
Object和Map的工程級實現(xiàn)在不同瀏覽器間存在明顯差異,但存儲單個鍵/值對所占用的內(nèi)存數(shù)量都會隨鍵的數(shù)量線性增加。批量添加或刪除鍵/值對則取決于各瀏覽器對該類型內(nèi)存分配的工程實現(xiàn)。不同瀏覽器的情況不同,但給定固定大小的內(nèi)存,Map大約可以比Object多存儲50%的鍵/值對
(2)插入性能
向Object和Map中插入新鍵/值對的消耗大致相當(dāng),不過插入Map在所有瀏覽器中一般會稍微快一點兒。對這兩個類型來說,插入速度并不會隨著鍵/值對數(shù)量而線性增加。如果代碼涉及大量插入操作,那么顯然Map的性能更佳
(3)查找速度
與插入不同,從大型Object和Map中查找鍵/值對的差異極小,但如果只包含少量鍵/值對,則Object有時候速度更快。在把Object當(dāng)成數(shù)組使用的情況下(比如使用連續(xù)整數(shù)作為屬性),瀏覽器引擎可以進行優(yōu)化,在內(nèi)存中使用更高效的布局。這對Map來說是不可能的。對這兩個類型而言,查找速度不會隨著鍵/值對數(shù)量增加而線性增加。如果代碼涉及大量查找操作,那么某些情況下可能選擇Object更好一些
(4)刪除性能
使用delete刪除Object屬性的性能一直以來飽受詬病,目前在很多瀏覽器中仍然如此。為此,出現(xiàn)了一些偽刪除對象屬性的操作,包括把屬性設(shè)置為undefined或null。但很多時候,這都是一種討厭的或不適宜的折中。而對大多數(shù)瀏覽器引擎來說,Map的delete()操作都比插入和查找更快。如果代碼涉及大量刪除操作,那么毫無疑問應(yīng)該選擇Map
最后
到此這篇關(guān)于js中map()函數(shù)的使用的文章就介紹到這了,更多相關(guān)js中map()函數(shù)的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
layui實現(xiàn)數(shù)據(jù)表格table分頁功能(ajax異步)
這篇文章主要為大家詳細(xì)介紹了layui實現(xiàn)數(shù)據(jù)表格table分頁功能、異步加載,表格渲染,含條件查詢,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07js中string轉(zhuǎn)int把String類型轉(zhuǎn)化成int類型
今天碰到一個問題,需要把String類型的變量轉(zhuǎn)化成int類型的,js中String轉(zhuǎn)int和Java中不一樣,不能直接把Java中的用到j(luò)s中2014-08-08詳解PHP中pathinfo()函數(shù)導(dǎo)致的安全問題
這篇文章主要給大家介紹了PHP中pathinfo()函數(shù)導(dǎo)致的安全問題,文中給出了詳細(xì)的介紹與示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下,下面來一起看看吧。2017-01-01淺談JS中的!=、== 、!==、===的用法和區(qū)別
下面小編就為大家?guī)硪黄獪\談JS中的!=、== 、!==、===的用法和區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09Bootstrap中的表單驗證插件bootstrapValidator使用方法整理(推薦)
這篇文章主要介紹了Bootstrap中的表單驗證插件bootstrapValidator使用方法整理(推薦)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06三分鐘學(xué)會用ES7中的Async/Await進行異步編程
這篇文章主要介紹了三分鐘學(xué)會用ES7中的Async/Await進行異步編程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06