<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript數(shù)組方法的錯誤使用例子

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:07:47
        文檔

        JavaScript數(shù)組方法的錯誤使用例子

        JavaScript數(shù)組方法的錯誤使用例子:1. 不要使用Array.indexOf,使用Array.includes 如果你要在數(shù)組中查找元素,使用Array.indexOf。記得在我學(xué)習(xí)JavaScript課程時候,有這樣一句話。這句話沒錯,確實可以這么使用! 根據(jù)MDN文檔:Array.indexOf會返回被查找元素第一個匹配
        推薦度:
        導(dǎo)讀JavaScript數(shù)組方法的錯誤使用例子:1. 不要使用Array.indexOf,使用Array.includes 如果你要在數(shù)組中查找元素,使用Array.indexOf。記得在我學(xué)習(xí)JavaScript課程時候,有這樣一句話。這句話沒錯,確實可以這么使用! 根據(jù)MDN文檔:Array.indexOf會返回被查找元素第一個匹配

        1. 不要使用Array.indexOf,使用Array.includes

        “如果你要在數(shù)組中查找元素,使用Array.indexOf!”。記得在我學(xué)習(xí)JavaScript課程時候,有這樣一句話。這句話沒錯,確實可以這么使用!

        根據(jù)MDN文檔:“Array.indexOf會返回被查找元素第一個匹配的位置的下標(biāo)。”因此,如果后面需要用到這個索引,Array.indexOf是一個很好的解法。但是,我們要解決的問題是:查找數(shù)組中是否包含某個元素。這是一個Yes/No的問題,是一個返回布爾類型的真假問題。因此,我建議使用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

        2. 不要使用Array.filter,使用Array.find

        Array.filter是一個很有用的函數(shù),它返回一個滿足過濾條件的新數(shù)組。正如其名字表達(dá)的含義,它是用來做過濾的。

        但是,如果我們知道我們要的結(jié)果只有一個元素的時候,我就不建議使用它了。比如,如果我們的回調(diào)函數(shù)定義用一個唯一的ID來過濾,那么結(jié)果必然唯一了。在這個情況下,Array.filter會返回只有一個元素的數(shù)組。因為既然能通過一個特定的ID來查找,我們已經(jīng)確定只有一個元素了,那么使用數(shù)組就沒有意義。

        另外,我們再來聊聊性能問題。為了返回所有匹配的元素,Array.filter需要查找整個數(shù)組。可以想象一下,如果有上百個元素滿足過濾條件,那么返回的數(shù)組就很大。

        為了避免這樣的情況,我建議使用Array.find。它僅僅返回第一個滿足過濾條件的元素。而且,Array.find會在查找到第一個滿足條件的元素后就結(jié)束執(zhí)行,而不會查找整個數(shù)組。

        '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' }

        3. 不要使用Array.find,使用Array.some

        我承認(rèn)我犯過很多次錯誤。后來,一個很要好的朋友讓我去看看MDN的文檔,說有更好的解決方案。這個情況和剛剛提到的Array.indexOf/Array.includes很像。

        在前面的例子中,我們看到Array.find接受一個過濾函數(shù),返回滿足的元素。那么,如果我們要查找一個數(shù)組是否包含某個元素的時候,Array.find是否是最佳的方案呢?可能不是,因為它返回的是元素具體的值,而不是布爾值。

        我推薦大家使用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

        4. 不要使用Array.map和Array.filter組合,使用Array.reduce

        Array.reduce有點難以理解!但是,如果我們每次在同時使用Array.filter和Array.map的時候,你是否覺察到需要點東西,對不?

        我的意思是:我們對整個數(shù)組循環(huán)了2遍。第一次是過濾返回一個新的數(shù)組,第二次通過map又構(gòu)造一個新的數(shù)組。我們使用了兩個數(shù)組方法,每一個方法都有各自的回調(diào)函數(shù),而且Array.filter返回的數(shù)組以后再也不會用到。

        為了避免低效率,我建議使用Array.reduce。同樣的結(jié)果,更優(yōu)雅的代碼!請看下面的例子:‘'

        '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'] }
        // ]

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript數(shù)組方法的錯誤使用例子

        JavaScript數(shù)組方法的錯誤使用例子:1. 不要使用Array.indexOf,使用Array.includes 如果你要在數(shù)組中查找元素,使用Array.indexOf。記得在我學(xué)習(xí)JavaScript課程時候,有這樣一句話。這句話沒錯,確實可以這么使用! 根據(jù)MDN文檔:Array.indexOf會返回被查找元素第一個匹配
        推薦度:
        標(biāo)簽: 方法 使用 js
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲AV第一页国产精品| 久久久久久A亚洲欧洲AV冫| 日韩视频免费在线| 国产成人综合久久精品免费| 婷婷亚洲天堂影院| 一个人免费播放在线视频看片 | 亚洲第一极品精品无码久久 | 亚洲五月午夜免费在线视频| 亚洲色偷偷综合亚洲AVYP| 日木av无码专区亚洲av毛片| 亚洲 日韩 色 图网站| 亚洲一本综合久久| 亚洲午夜精品国产电影在线观看| 亚洲AV永久无码精品网站在线观看| 亚洲精品综合久久中文字幕| 亚洲一区二区三区国产精华液| 人妻无码中文字幕免费视频蜜桃 | 国产精品永久免费视频| 免费无码VA一区二区三区| 大地资源在线观看免费高清| 亚洲AV无码一区二区三区在线观看| 成人永久福利免费观看| 国产亚洲av人片在线观看| 亚洲美女免费视频| 亚洲成人午夜电影| 一级成人毛片免费观看| 2021在线观看视频精品免费| 国产曰批免费视频播放免费s| 国产成人免费手机在线观看视频 | 国产在线98福利播放视频免费| 国产亚洲精AA在线观看SEE| 亚洲jjzzjjzz在线观看| 亚洲久悠悠色悠在线播放| 成人午夜影视全部免费看| 2019中文字幕在线电影免费 | 亚洲人成未满十八禁网站| 国产免费黄色无码视频| 99在线视频免费观看视频 | 99久久精品国产免费| 国产免费人人看大香伊| 2022年亚洲午夜一区二区福利 |