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

淺談JS數(shù)組內(nèi)置遍歷方法有哪些和區(qū)別

 更新時(shí)間:2021年11月02日 09:18:32   作者:落墨詩卷  
本文主要介紹了淺談JS數(shù)組內(nèi)置遍歷方法有哪些和區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

forEach()(ES6)方法

forEach()(ES6)方法對數(shù)組的每個(gè)元素執(zhí)行一次給定的函數(shù)。

    1. 數(shù)組里的元素個(gè)數(shù)有幾個(gè),該方法里的回調(diào)就會執(zhí)行幾次
    2. 第一個(gè)參數(shù)是數(shù)組里的元素,第二個(gè)參數(shù)為數(shù)組里元素的索引,第三個(gè)參數(shù)則是它自己(利用第三個(gè)參數(shù)可以進(jìn)行數(shù)組去重)
    3. 數(shù)組自帶的遍歷方法,foreach在循環(huán)次數(shù)未知或者計(jì)算起來較復(fù)雜的情況下效率比for循環(huán)高
    4. 循環(huán)的數(shù)組元素是基本數(shù)據(jù)類型,不會改變原數(shù)據(jù)的數(shù)據(jù),循環(huán)的數(shù)組元素為對象,會改變原數(shù)組的對象屬性的值
    5. 循環(huán)過程中不支持修改索引,回調(diào)中使用return不會報(bào)錯(cuò),但是無效

    注意:不能使用break和continue跳出整個(gè)循環(huán)或當(dāng)前循環(huán)的,會報(bào)錯(cuò),但是結(jié)合try...catch可以實(shí)現(xiàn)跳出循環(huán)

const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element));

缺點(diǎn):沒有辦法中止或跳出 `forEach()` 循環(huán)

map()(ES6) 方法

map()(ES6) 方法創(chuàng)建一個(gè)新數(shù)組,其結(jié)果是該數(shù)組中的每個(gè)元素是調(diào)用一次提供的函數(shù)后的返回值。

    const array1 = [1, 4, 9, 16];
    const map1 = array1.map(x => x * 2);
    console.log(map1);  //[2, 8, 18, 32]

    三個(gè)參數(shù):數(shù)組元素,元素索引,原數(shù)組本身

flatMap()方法

flatMap()方法首先使用映射函數(shù)映射每個(gè)元素,然后將結(jié)果壓縮成一個(gè)新數(shù)組。它與 map 連著深度值為1的 flat 幾乎相同,但 flatMap 通常在合并成一種方法的效率稍微高一些。

    var arr1 = [1, 2, [3, 4]];
    arr1.flatMap(x => x);    //[1, 2, 3, 4]
    var arr1 = [1, 2, 3, 4];
    arr1.flatMap(x => [[x * 2]]);   // [[2], [4], [6], [8]]

for...in...

這個(gè)循環(huán)用的人也很多,但是效率最低(輸出的 key 是數(shù)組索引),如果遍歷的是對象,輸出的則是對象的屬性名

for...of...

  性能要好于 `for..in...`,但仍然比不上普通的 `for` 循環(huán)
     注意:不能循環(huán)對象,因?yàn)槿魏螖?shù)據(jù)結(jié)構(gòu)只要部署 Iterator接口,就可以完成遍歷操作,有些數(shù)據(jù)結(jié)構(gòu)原生具備 Iterator 接口,比如Array、Map、Set、String等,而 Iterator 接口是部署在數(shù)據(jù)結(jié)構(gòu)的Symbol.iterator屬性上的,而對象Object恰恰是沒有Symbol.iterator屬性的,所以無法被for..of遍歷

filter(ES6)遍歷數(shù)組

filter(ES6)遍歷數(shù)組,過濾出符合條件的元素并返回一個(gè)新數(shù)組, 如果沒有任何數(shù)組元素通過測試,則返回空數(shù)組。

    const result = words.filter(word => word.length > 6);
    console.log(result)   //["exuberant", "destruction", "present"]
some()函數(shù)(ES6)
    遍歷數(shù)組中是否有符合條件的元素,返回值為Boolean值
    這個(gè)它只要找到一個(gè)符合條件的,就返回 true。
    var arr = [
     { id: 1, name: '買筆', done: true },
     { id: 2, name: '買筆記本', done: true },
     { id: 3, name: '練字', done: false }
    ]
    
    var bool = arr.some(function (item, index) {
     return item.done
    })
    console.log(bool)    // true

every()函數(shù)(ES6)

   測試數(shù)組的各個(gè)元素是否通過了回調(diào)函數(shù)的測試
    若都通過,返回 true,否則返回 false
    簡單的說就是如果回調(diào)函數(shù)每次返回的值都是 true 的話,則 every() 返回 true,否則為 false。

    var arr = [
        { id: 1, name: '買筆', done: true },
        { id: 2, name: '買筆記本', done: true },
        { id: 3, name: '練字', done: false }
    ]
    var bool = arr.every((item, index) => {
        return item.done
    })
    console.log(bool)    // false

find()函數(shù)(ES6)

返回第一個(gè)通過測試的元素,如果沒有通過測試的元素,則會返回**undefined**。

    var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
    var num = arr.find( (item, index) => {
        return item === 3
    })
    console.log(num)   //  3

findIndex()函數(shù) (ES6)

這個(gè)函數(shù)與上面的find()作用一樣,就是它返回的值為該通過第一個(gè)元素的索引。

    var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
    var num = arr.findIndex(item => {
        return item === 3
    })
    console.log(num)   //  4

 到此這篇關(guān)于淺談JS數(shù)組內(nèi)置遍歷方法有哪些和區(qū)別的文章就介紹到這了,更多相關(guān)JS數(shù)組內(nèi)置遍歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript?對象的四種方式比較詳解

    JavaScript?對象的四種方式比較詳解

    本文主要介紹了JavaScript?對象的四種方式比較詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • JavaScript對象屬性檢查、增加、刪除、訪問操作實(shí)例

    JavaScript對象屬性檢查、增加、刪除、訪問操作實(shí)例

    這篇文章主要介紹了JavaScript對象屬性檢查、增加、刪除、訪問操作實(shí)例,本文分別給出代碼實(shí)例來講解如何給對象增加屬性、檢查屬性存在、以及刪除和訪問屬性,需要的朋友可以參考下
    2015-07-07
  • 由 element.appendChild(newNode) ,談開去

    由 element.appendChild(newNode) ,談開去

    由 element.appendChild(newNode) ,談開去...
    2006-11-11
  • pnpm?monorepo?聯(lián)調(diào)方案問題解析

    pnpm?monorepo?聯(lián)調(diào)方案問題解析

    文章主要介紹了在pnpmmonorepo環(huán)境下進(jìn)行多庫聯(lián)調(diào)的方案,包括使用`pnpmlink`命令來鏈接指定的文件夾或全局的`node_modules`,并在項(xiàng)目中通過`pnpmlink--global<pkg>`來引用這些庫,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • js判斷手機(jī)端(Android手機(jī)還是iPhone手機(jī))

    js判斷手機(jī)端(Android手機(jī)還是iPhone手機(jī))

    現(xiàn)在使用手機(jī)上網(wǎng)的人越來越多,一些下載網(wǎng)站會通過判斷不同系統(tǒng)手機(jī)來訪問不同網(wǎng)頁,比如iPhone和Android。下面我們就來介紹一下如何用javascript判斷iPhone或Android手機(jī)訪問
    2015-07-07
  • JS加載iFrame出現(xiàn)空白問題的解決辦法

    JS加載iFrame出現(xiàn)空白問題的解決辦法

    在使用IE6瀏覽器開發(fā)過程中出現(xiàn)各種奇葩問題,非常棘手,費(fèi)勁腦汁終于問題解決。小編把解決辦法分享到腳本之家平臺,需要的朋友可以參考下
    2016-05-05
  • bcastr2.0 通用的圖片瀏覽器

    bcastr2.0 通用的圖片瀏覽器

    bcastr2.0 通用的圖片瀏覽器...
    2006-11-11
  • A標(biāo)簽中通過href和onclick傳遞的this對象實(shí)現(xiàn)思路

    A標(biāo)簽中通過href和onclick傳遞的this對象實(shí)現(xiàn)思路

    想傳遞當(dāng)前對象給一個(gè)函數(shù),于是就將這個(gè)URL寫成"Javascript:shoControlSidebar(this)",可是結(jié)果發(fā)現(xiàn)這并不可行,接下來為大家詳細(xì)介紹下解決方法
    2013-04-04
  • Bootstrap表單組件教程詳解

    Bootstrap表單組件教程詳解

    表單常見的元素主要包括:文本輸入框、下拉選擇框、單選框、復(fù)選框、文本域、按鈕等。接下來通過本文給大家介紹Bootstrap表單組件教程,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • 手把手教你 CKEDITOR 4 實(shí)現(xiàn)Dialog 內(nèi)嵌 IFrame操作詳解

    手把手教你 CKEDITOR 4 實(shí)現(xiàn)Dialog 內(nèi)嵌 IFrame操作詳解

    這篇文章主要介紹了手把手教你 CKEDITOR 4 實(shí)現(xiàn)Dialog 內(nèi)嵌 IFrame操作,結(jié)合實(shí)例形式分析了CKEDitor4 Dialog內(nèi)嵌IFrame具體操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-06-06

最新評論

沈阳市| 高雄市| 额敏县| 阳西县| 黄陵县| 诸城市| 湖南省| 开封市| 宜兴市| 长泰县| 南丹县| 民和| 耒阳市| 重庆市| 图片| 奎屯市| 溧水县| 侯马市| 延安市| 米林县| 当阳市| 陆川县| 炉霍县| 临武县| 柳州市| 铜陵市| 湖口县| 温州市| 巴彦县| 兴化市| 昌宁县| 山东省| 合作市| 望谟县| 廊坊市| 衡东县| 临城县| 大田县| 革吉县| 视频| 舒城县|