2022-12-30 迭代數組方法

1.forEach()

定義:迭代數組的每一個元素倔撞。(對數組的每一個元素都調用一次指定函數)
語法:

 arr.forEach(function(數組元素,數組索引,數組){},this)

參數:

  • Function(){} 必選
    調用函數的時候荐操,可以在函數內傳入一下三個參數
    item: 數組中的一個元素元素震嫉,必須赤赊。
    index: 數組索引,可選渊涝。
    arr: 當前數組慎璧,可選。
  • this :可選

返回值:undefined
注意:對于沒有值的數組元素跨释,不執(zhí)行forEach() 方法胸私。
示例:

 let arr = [1,2,3,4,5]
    // arr.forEach(function(數組元素,數組索引,數組){},this)
    arr.forEach(function(item,index,arr){
        console.log(item + 1)//[2,3,4,5,6]
    })

2.map()

定義:

  • map() 方法通過對每個數組元素執(zhí)行函數來創(chuàng)建新數組。
  • map() 方法不會對沒有值的數組元素執(zhí)行函數煤傍。
  • map() 方法不會更改原始數組盖文。
    語法:
array.map(function(tiem, index, arr), thisValue)

參數:

  • Function(){} 必選
    調用函數的時候,可以在函數內傳入一下三個參數
    item: 數組中的一個元素元素蚯姆,必須五续。
    index: 數組索引,可選龄恋。
    arr: 當前數組疙驾,可選。
  • this :可選

返回值:數組郭毕,為原始數組中的每個元素調用函數的結果它碎。

注意:

  • map()函數不會對空數組進行檢測
  • map()函數不會改變原始數組,它形成的是 一個新的數組

示例:

  let arr = [1,2,3,4,5,6]
        arr.map(function(item){
            console.log(item + 2) // 3,4,5,6,7,8
        })

3.Filter

定義:

  • filter()創(chuàng)建一個新的數組显押,新數組中的元素是通過檢查指定數組中符合條件的所有元素扳肛。

用法:

  • filter() 方法用于把Array中的某些元素過濾掉,然后返回剩下的未被過濾掉的元素乘碑。

語法:

array.filter(function(item index, arr), thisValue)

參數:

  • Function(){} 必選
    調用函數的時候挖息,可以在函數內傳入一下三個參數
    item: 數組中的一個元素元素,必須兽肤。
    index: 數組索引套腹,可選绪抛。
    arr: 當前數組,可選电禀。
  • this :可選

返回值:包含所有通過測試的數組元素的數組幢码。如果沒有元素通過測試,則返回一個空數組尖飞。

注意:

  • 1症副、filter() 不會對空數組進行檢測;
  • 2葫松、filter() 不會改變原始數組瓦糕。

示例:

 let arr = [1,2,3,4,5]
  let arr = [1,2,3,4,5,6]
        let res = arr.filter((arr1) => {
            return arr1 >= 2
        })
        console.log(res) // [2,3,4,5,6]

4.Find

定義:返回數組中第一個通過測試的元素的值

用法
find() 方法為數組中的每個元素都調用一次函數執(zhí)行:

  • 當數組中的元素在測試條件時返回 true 時, find() 返回符合條件的元素,之后的值不會再調用執(zhí)行函數腋么。
  • 如果沒有符合條件的元素返回 undefined

語法:

array.find(function(currentValue, index, arr), thisValue)

參數:

第一個參數:function(currentValue, index, arr) 必需。為數組中的每個元素運行的函數亥揖。

函數參數:
currentValue 必需珊擂。當前元素。
index 可選费变。當前元素的數組索引摧扇。
arr 可選。當前元素所屬的數組對象

第二個參數:thisValue

可選挚歧。要傳遞給函數以用作其 "this" 值的值扛稽。
如果此參數為空,就是undefined滑负。

返回值:如果數組中的任何元素通過測試在张,則返回數組元素值,否則返回 undefined矮慕。

注意:

  • find() 對于空數組帮匾,函數是不會執(zhí)行的。
  • find() 并沒有改變數組的原始值痴鳄。

示例:

  let arr = [1,2,3,4,5,6]

        let res = arr.find((arr1) => {
            return arr1 >= 2
        })
        console.log(res) // 2

5.Findindex

定義:返回數組中通過條件的第一個元素的索引
語法:

array.findIndex(function(currentValue, index, arr), thisValue)

參數:

第一個參數:function(currentValue, index, arr) 必需瘟斜。為數組中的每個元素運行的函數。

函數參數:
currentValue 必需痪寻。當前元素螺句。
index 可選。當前元素的數組索引橡类。
arr 可選蛇尚。當前元素所屬的數組對象

第二個參數:thisValue

可選。要傳遞給函數以用作其 "this" 值的值猫态。
如果此參數為空佣蓉,就是undefined披摄。

返回值:
如果數組中的任何元素通過條件,則返回數組元素索引勇凭,否則返回 -1疚膊。

注意:

  • findIndex() 對于空數組,函數是不會執(zhí)行的虾标。
  • findIndex() 并沒有改變數組的原始值寓盗。

示例:

  let arr = [1,2,3,4,5,6]
        let res = arr.findIndex(arr1=> {
            return arr1 > 2
        })
        console.log(res) // 2

6.Every

定義:檢驗數組中的所有元素是否都通過了設定的條件(被作為函數提供)。every() 方法對數組中存在的每個元素執(zhí)行一次函數璧函。
語法:

array.every(function(數組元素, index, arr), thisValue)

參數:

  • Function(){} 必選
    調用函數的時候傀蚌,可以在函數內傳入一下三個參數
    item: 數組中的一個元素元素,必須蘸吓。
    index: 數組索引善炫,可選。
    arr: 當前數組库继,可選箩艺。
  • this :可選

返回值:*布爾值。如果數組中的所有元素都通過設定的條件宪萄,則返回 true艺谆,否則返回 false.

注意:

  • every() 不會對空數組進行檢測
  • every() 不會改變原始數組

示例:

// every每一個元素是否滿足指定條件,沒有滿足返回false,滿足返回true
        // let arr = [1,2,3,4,5,6]
        let arr = [5,6,7,8,9,9] //true
        let res = arr.every(function(item,index,arr){
            //數組中的每個元素的值都要大于4,才會返回true
            return item > 4
        })
        console.log(res) //false

7.Some

定義:檢查數組中的任何元素是否通過特定條件

注意
some() 不會對空數組進行檢測拜英。
some() 不會改變原始數組静汤。

語法:

array.some(function(currentValue, index, arr), thisValue)

參數:

第一個參數:function(currentValue, index, arr) 必需。為數組中的每個元素運行的函數居凶。

函數參數:
sum:用于存儲數組之和的變量虫给。
currentValue 必需。當前元素排监。
index 可選狰右。當前元素的數組索引。
arr 可選舆床。當前元素所屬的數組對象

第二個參數:thisValue

可選棋蚌。要傳遞給函數以用作其 "this" 值的值。
如果此參數為空挨队,則值 "undefined" 將作為其 "this" 值傳遞
返回值:布爾值谷暮。如果數組中的任何元素通過測試,則返回 true盛垦,否則返回 false湿弦。
示例:

  let arr = [1,2,3,4,5,6]
          // 調用some方法查詢arr數組里大于4的數
        let res = arr.some(function(item){
            return item > 4
        })
        console.log(res) //true

8.reduce

定義:接收一個函數作為累加器,數組中的每個值(從左到右)開始增減腾夯,最終計算為一個值颊埃。
語法:

array.reduce(function(prev, current, currentIndex, arr), initialValue)

參數:
prev:函數傳進來的初始值或上一次回調的返回值
current:數組中當前處理的元素值
currentIndex:當前元素索引
arr:當前元素所屬的數組本身
initialValue:傳給函數的初始值

返回值:返回計算結果

注意: reduce() 對于空數組是不會執(zhí)行回調函數的蔬充。

示例:

     let arr = [1,2,3,4,5,6]
        let res = arr.reduce(function(prev,item){
            return prev + item
        })
        console.log(res) //21

9.reduceRight

定義:reduceRight() 方法的功能和 reduce() 功能是一樣的,不同的是 reduceRight() 從數組的末尾向前將數組中的數組項做累加班利。
語法:

array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue)

參數:

  • total 必需饥漫。初始值, 或者計算結束后的返回值。
  • currentValue 必需罗标。當前元素
  • currentIndex 可選庸队。當前元素的索引
  • arr 可選。當前元素所屬的數組對象闯割。
  • initialValue 可選彻消。傳遞給函數的初始值

返回值:
注意:reduce() 對于空數組是不會執(zhí)行回調函數的
示例:

 let arr = [1,2,3,4,5,6,7,8,9,10]
        // reduceRight() 方法從數組的最后一項開始,向前遍歷到第一項宙拉。
        let res = arr.reduceRight(function(prev,item,index,arr){
            return prev + item
        })
        console.log(res) //55
  • reduce() 方法和reduceRight()區(qū)別是:reduce() 方法從數組的第一項開始宾尚,遍歷到最后。而
    reduceRight() 方法從數組的最后一項開始鼓黔,向前遍歷到第一項央勒。

  • every和Some的區(qū)別

    • some(): 如果有一個元素滿足條件,則表達式返回true , 剩余的元素不會再執(zhí)行檢測澳化。
      如果沒有滿足條件的元素,則返回false稳吮。
    • every() : 如果數組中檢測到有一個元素不滿足缎谷,則整個表達式返回 false ,且剩余的元素不會再進行檢測灶似。
      如果所有元素都滿足條件列林,則返回 true。
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末酪惭,一起剝皮案震驚了整個濱河市希痴,隨后出現的幾起案子,更是在濱河造成了極大的恐慌春感,老刑警劉巖砌创,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異鲫懒,居然都是意外死亡嫩实,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門窥岩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甲献,“玉大人,你說我怎么就攤上這事颂翼』稳鳎” “怎么了慨灭?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長球及。 經常有香客問我氧骤,道長,這世上最難降的妖魔是什么桶略? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任语淘,我火速辦了婚禮,結果婚禮上际歼,老公的妹妹穿的比我還像新娘惶翻。我一直安慰自己,他們只是感情好鹅心,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布吕粗。 她就那樣靜靜地躺著,像睡著了一般旭愧。 火紅的嫁衣襯著肌膚如雪颅筋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天输枯,我揣著相機與錄音议泵,去河邊找鬼。 笑死桃熄,一個胖子當著我的面吹牛先口,可吹牛的內容都是我干的。 我是一名探鬼主播瞳收,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碉京,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了螟深?” 一聲冷哼從身側響起谐宙,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎界弧,沒想到半個月后凡蜻,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡夹纫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年咽瓷,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舰讹。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茅姜,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情钻洒,我是刑警寧澤奋姿,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站素标,受9級特大地震影響称诗,放射性物質發(fā)生泄漏。R本人自食惡果不足惜头遭,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一寓免、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧计维,春花似錦袜香、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至欠母,卻和暖如春欢策,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赏淌。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工踩寇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人六水。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓姑荷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缩擂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容