日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript中Array方法的正確打開方式

瀏覽:182日期:2023-11-10 13:31:02

JavaScript中Array方法的正確打開方式

在過去的幾個月,我發(fā)現(xiàn)我的拉取請求中存在四個完全相同的 JavaScript 錯誤。于是我寫了這篇文章,總結(jié)了如何在 JavaScript 中正確使用地使用 Array 的方法!

用 Array.includes 代替 Array.indexOf

“如果你要在數(shù)組中查找元素,請使用 Array.indexOf”。我記得在學習 JavaScript 的時候,在教材中讀到這樣的一句話。毫無疑問,這句話是真的!

MDN 文檔寫道,Array.indexOf 將“返回第一次出現(xiàn)給定元素的索引”。因此,如果我們稍后要在代碼中使用這個返回的索引,那么使用 Array.indexOf 找到索引就對了。

但是,如果我們只想知道數(shù)組是否包含某個值,該怎么辦?這似乎是一個是與否的問題,或者說是一個布爾值問題。對于這種情況,我建議使用返回布爾值的 Array.includes。

’use strict’; const characters = [ ’ironman’, ’black_widow’, ’hulk’, ’captain_america’, ’hulk’, ’thor’, ]; console.log(characters.indexOf(’hulk’)); // 2 console.log(characters.indexOf(’batman’)); // -1 console.log(characters.includes(’hulk’)); // true console.log(characters.includes(’batman’)); // false 使用 Array.find 而不是 Array.filter

Array.filter 是一個非常有用的方法。它接受一個回調(diào)函數(shù)作為參數(shù),基于一個包含所有元素的數(shù)組創(chuàng)建出一個新的數(shù)組。正如它的名字一樣,我們使用這個方法來過濾元素,獲得更短的數(shù)組。

但是,如果回調(diào)函數(shù)只能返回一個元素,那么我就不推薦使用這個方法,例如使用回調(diào)函數(shù)來過濾唯一 ID。在這種情況下,Array.filter 將返回一個只包含一個元素的新數(shù)組。我們的意圖可能是通過查找特定的 ID 找到數(shù)組中包含的唯一值。

我們來看看這個方法的性能。要返回與回調(diào)函數(shù)匹配的所有元素,Array.filter 必須遍歷整個數(shù)組。此外,我們假設(shè)有數(shù)百個元素可以滿足回調(diào)參數(shù),那么過濾后的數(shù)組會非常大。

為了避免這種情況,我建議使用 Array.find。它需要一個像 Array.filter 一樣的回調(diào)函數(shù)作為參數(shù),并返回滿足回調(diào)函數(shù)的第一個元素的值。此外,只要找到第一個滿足回調(diào)函數(shù)的元素,Array.find 就會停止,無需遍歷整個數(shù)組。通過 Array.find 來查找元素,我們可以更好地理解我們的意圖。

’use strict’; const characters = [ { id: 1, name: ’ironman’ }, { id: 2, name: ’black_widow’ }, { id: 3, name: ’captain_america’ }, { id: 4, name: ’captain_america’ }, ]; function getCharacter(name) { return character => character.name === name; } console.log(characters.filter(getCharacter(’captain_america’))); // [ // { id: 3, name: ’captain_america’ }, // { id: 4, name: ’captain_america’ }, // ] console.log(characters.find(getCharacter(’captain_america’))); // { id: 3, name: ’captain_america’ }

用 Array.some 代替 Array.find

我承認這個錯誤我犯了很多次。然后,一位善良的朋友告訴我,最好可以先參考 MDN 文檔。這與上面的 Array.indexOf/Array.includes 非常相似。

在前面的例子中,我們看到 Array.find 需要一個回調(diào)函數(shù)作為參數(shù),并返回一個元素。如果我們想要知道數(shù)組是否包含某個值,Array.find 是最好的解決方案嗎?可能不是,因為它返回的是一個元素值,而不是一個布爾值。

對于這種情況,我建議使用 Array.some,它返回所需的布爾值。另外,從語義上看,Array.some 表示我們只想知道某個元素是否存在,而不需要得到這個元素。

’use strict’; const characters = [ { id: 1, name: ’ironman’, env: ’marvel’ }, { id: 2, name: ’black_widow’, env: ’marvel’ }, { id: 3, name: ’wonder_woman’, env: ’dc_comics’ }, ]; function hasCharacterFrom(env) { return character => character.env === env; } console.log(characters.find(hasCharacterFrom(’marvel’))); // { id: 1, name: ’ironman’, env: ’marvel’ } console.log(characters.some(hasCharacterFrom(’marvel’))); // true

使用 Array.reduce 而不是鏈接 Array.filter 和 Array.map

讓我們面對現(xiàn)實吧,Array.reduce 不容易理解。事實確實如此!但是,如果我們使用 Array.filter 和 Array.map 的組合,感覺缺少了什么,對吧?

我的意思是,我們遍歷了兩次數(shù)組。第一次過濾數(shù)組并創(chuàng)建一個較短的數(shù)組,第二次又基于 Array.filter 獲得數(shù)組創(chuàng)建一個包含新值的數(shù)組。為了獲得我們想要的新數(shù)組,我們使用了兩個 Array 方法。每個方法都有自己的回調(diào)函數(shù)和一個用不到的數(shù)組——由 Array.filter 創(chuàng)建的那個數(shù)組。

為了避免這種性能損耗,我的建議是使用 Array.reduce。結(jié)果是一樣的,代碼卻更簡單! 我們可以使用 Array.reduce 進行過濾,并將目標元素添加到累加器中。累加器可以是遞增的數(shù)字、要填充的對象、要連接的字符串或數(shù)組。

在我們的例子中,因為之前使用了 Array.map,所以我建議使用 Array.reduce 將滿足條件的數(shù)組元素加入到累加器中。在下面的示例中,根據(jù) env 值的具體情況,我們將它添加到累加器中或保持累加器不變。

’use strict’; const characters = [ { name: ’ironman’, env: ’marvel’ }, { name: ’black_widow’, env: ’marvel’ }, { name: ’wonder_woman’, env: ’dc_comics’ }, ]; console.log( characters .filter(character => character.env === ’marvel’) .map(character => Object.assign({}, character, { alsoSeenIn: [’Avengers’] })) ); // [ // { name: ’ironman’, env: ’marvel’, alsoSeenIn: [’Avengers’] }, // { name: ’black_widow’, env: ’marvel’, alsoSeenIn: [’Avengers’] } // ] console.log( characters .reduce((acc, character) => {return character.env === ’marvel’ ? acc.concat(Object.assign({}, character, { alsoSeenIn: [’Avengers’] })) : acc; }, []) ) // [ // { name: ’ironman’, env: ’marvel’, alsoSeenIn: [’Avengers’] }, // { name: ’black_widow’, env: ’marvel’, alsoSeenIn: [’Avengers’] } // ]

【責任編輯:龐桂玉 TEL:(010)68476606】

來自:http://developer.51cto.com/art/201809/583079.htm

標簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美成人精品一级| 亚洲一区有码| 日韩av二区| 亚洲精品一区二区在线看| 亚洲资源av| 日韩欧美网址| 亚洲激情婷婷| 麻豆成人综合网| 国产亚洲精品美女久久久久久久久久| 亚洲伊人精品酒店| 亚洲一区二区三区高清| 日韩电影二区| 黄色网一区二区| 欧美精品三级在线| 亚洲天堂1区| 国产精品男女| 免费观看久久av| 国内精品伊人| 久久精品一区| 久久国产视频网| 午夜精品影视国产一区在线麻豆| 999视频精品| 精品国产精品久久一区免费式| 日韩精彩视频在线观看| 蜜桃视频一区二区| 国产亚洲在线| 亚洲精品系列| 日韩欧美久久| 91精品丝袜国产高跟在线| 免费人成精品欧美精品| 日韩午夜高潮| 1024精品一区二区三区| 国产日韩欧美三区| 久久精品亚洲一区二区| 日本免费一区二区三区四区| 999久久久精品国产| 三级欧美在线一区| 久久精品99国产精品日本| 成人在线免费观看91| 91精品亚洲| 日产欧产美韩系列久久99| 久久久精品国产**网站| 久久久久免费av| 亚洲精品无播放器在线播放| 亚洲精品看片| 日韩精品dvd| 国产理论在线| 精品欧美日韩精品| 91精品蜜臀一区二区三区在线| 视频一区日韩精品| 青青草91视频| 97国产精品| se01亚洲视频| 一区二区精品伦理...| 免费高清在线一区| 欧美成人国产| 青青国产精品| 男女性色大片免费观看一区二区 | 国产精品久久国产愉拍| 欧美一区二区三区久久| 欧美日韩视频免费看| 91日韩免费| 国产亚洲一区在线| 国产精品久久久久久妇女| 欧洲一区二区三区精品| 国产精品手机在线播放| 免费黄网站欧美| 日韩国产欧美一区二区| 九色精品91| 视频在线观看国产精品| 中文字幕人成乱码在线观看 | 日韩高清不卡在线| 日韩专区欧美专区| 亚洲高清影视| 国产精品nxnn| 99国产精品| av免费不卡国产观看| 日韩专区欧美专区| 日韩激情精品| 欧美一区二区三区久久| 国产视频一区免费看| 国产免费av国片精品草莓男男| 欧美日韩一区二区三区四区在线观看 | 久久男人av| 成人在线免费观看91| 国产成人精品福利| 日本美女一区| 亚洲一级黄色| 精品一区二区三区的国产在线观看| 99国产精品| 麻豆网站免费在线观看| 国产香蕉精品| 青青草91视频| 伊人久久大香伊蕉在人线观看热v| 日韩高清电影一区| 久久香蕉精品香蕉| 国产精品一区二区三区av麻| 蜜桃视频免费观看一区| 国产一区二区三区精品在线观看| 日韩精品一二区| 啪啪亚洲精品| 激情中国色综合| 美日韩精品视频| 欧美日韩夜夜| 日韩三级一区| 国产h片在线观看| 麻豆国产精品视频| 青青青免费在线视频| 精品欠久久久中文字幕加勒比| 国产亚洲精品美女久久| 亚洲va久久| 日韩国产精品久久久| 另类亚洲自拍| 日本视频一区二区| 日韩精品视频在线看| 妖精视频成人观看www| 久久国产电影| 亚洲一区二区三区免费在线观看 | 久久久久久自在自线| 欧美在线亚洲综合一区| 亚洲深夜影院| 亚洲精品极品| 欧美日韩一区二区三区四区在线观看| 国产日韩欧美一区二区三区| 精品日本视频| 欧美午夜不卡影院在线观看完整版免费| 欧美精品羞羞答答| 亚洲欧美网站在线观看| 日本三级亚洲精品| 色偷偷色偷偷色偷偷在线视频| 丝袜av一区| 亚洲欧美网站| 欧美日韩一区二区三区四区在线观看 | 国产精品白丝久久av网站| 欧美日韩亚洲三区| 蜜桃久久av一区| 色偷偷偷在线视频播放| 国产精品婷婷| 国产精品宾馆| 成人台湾亚洲精品一区二区| 日韩av影院| 日韩专区视频网站| 国产精品中文字幕亚洲欧美| 国产一区 二区| 日韩在线视频一区二区三区| 在线看片国产福利你懂的| 婷婷综合六月| 你懂的亚洲视频| 一区二区不卡| 麻豆理论在线观看| 日韩中文字幕av电影| av亚洲一区二区三区| 久久高清免费观看| 国产欧美一区二区三区米奇| 日韩天堂av| 911精品国产| 精品黄色一级片| 国产美女高潮在线| www.51av欧美视频| 久久精品中文| 日韩av在线播放网址| 国产亚洲精品久久久久婷婷瑜伽| 久色成人在线| 九九99久久精品在免费线bt| 亚洲精品自拍| 亚洲男女自偷自拍| 激情久久婷婷| 精品丝袜在线| 国产精品av一区二区| 97精品资源在线观看| 日韩久久精品网| 日本aⅴ免费视频一区二区三区| 欧美在线91| 精品一级视频| 久久97久久97精品免视看秋霞| 国产一区调教| 婷婷色综合网| 日本成人一区二区| 蜜臀国产一区二区三区在线播放 | 日本成人在线视频网站| 久久三级视频| 中文字幕在线看片| 91tv亚洲精品香蕉国产一区| 在线看片福利| 日韩一区电影| 六月丁香综合| 日本亚洲欧美天堂免费| 久久国际精品| 久久国产日韩| 日韩精品免费视频人成| 日本欧美韩国一区三区| 免费久久99精品国产| 西西人体一区二区| 麻豆一区在线| 欧美偷窥清纯综合图区| 日韩国产欧美| 欧美日韩伊人| 国产欧美日韩一区二区三区四区| 国产午夜久久| 国产欧美一区二区三区米奇|