Javascript -- 數組迭代方法學習

1、數組迭代方法

一、forEach

調用數組

arr.forEach((value, index) => {
  console.log(value, index)
})

forEach是循環遍歷一遍數組的每一項,這個是沒有返回值的,這個方法裏面有個回調函數,回調函數有兩個參數,第一個是數組每一項的值value,第二個參數是數組每一項對應的下標索引index函數

Tips這個forEahc循環遍歷和JQuery的$.each()方法是相似的,只不過須要注意的是$.each方法裏面的回調函數的兩個參數跟forEach方法是相反的,第一個參數是數組每一項的下標索引index,第二個參數纔是數組每一項 的值value測試

二、every

方法參考文獻code

調用索引

const boolean = arr.every((value, index, arr) => {
  return value==2
})

這個數組方式有點相似短路運算&&,能夠看成是一個數組驗真的方法,這個方法裏面有個回調函數,這個回調函數有三個參數,第一個是測試的數組每一項,第二個是測試數組項的下標索引,第三個是測試的原數組ip

測試數組的每一項都會執行every()方法裏面的回調函數,這個函數是用來校驗數組的每一項是否知足指定條件,數組每一項都會執行一次回調函數,若是數組裏面的全部項都知足指定條件,則返回true,但凡數組裏有一項不知足條件,則返回falseget

Tips 若是測試的是空數組,則在一切狀況下都會返回true,這個方法並不會改變原數組回調函數

三、some

方法參考文獻it

調用console

const boolean = arr.some((value, index, arr) => {
  return value==2
})

這個數組方法有點相似短路運算||,能夠看成是一個數組驗假的方法,這個方法裏面有個回調函數,這個回調函數有三個參數,第一個是測試的數組每一項,第二個是測試數組每一項的下標索引,第三個是測試的原數組

測試數組的每一項都會執行some()方法裏面的回調函數,這個函數是用來校驗數組的每一項是否有一個知足指定條件,數組每一項都會執行一次回調函數,若是數組裏面的全部項都不知足指定條件,則返回false,但凡數組裏有一項知足條件,則當即返回true

Tips 若是測試的是空數組,則在一切狀況下都會返回false,注意這個方法沒有找到一個知足條件的數組項,就會一直執行下去,若是找到一個知足條件的數組項,則會當即返回true,後面的數據就不會再執行

四、map

方法參考文獻

調用

const newArr = arr.map((value, index, arr) => {
  return value==2
})

這個數組方法會返回一個新數組,數組的結果是數組每一項執行回調函數後的結果的集合,這個方法的回調函數有三個參數,第一個是測試的數組每一項,第二個是測試數組每一項的下標索引,第三個是測試的原數組

測試數組每一項都會執行回調函數,並把執行的結果追加到一個新數組裏面,而後返回這個新數組,這個新數組的每一項都是執行回調函數後的結果集

Tips 這個方法並會改變原數組,可是能夠在 callback 執行時改變原數組

五、filter

方法參考函數

調用

const newArr = arr.filter((value, index, arr) => {
  return value==2
})

這個數組方法會返回一個新數組,新數組的結果是測試數組的每一項執行回調函數過濾篩選後知足條件的結果集,這個方法的回調函數有三個參數,第一個是測試的數組每一項,第二個是測試數組每一項的下標索引,第三個是測試的原數組

這個方法就至關於於一個過濾器,篩選器,測試數組每一項都會指定回調函數,可是隻有知足指定結果的項才能夠被添加到新數組,並返回,不知足的則被過濾掉,若是都不知足,則返回一個空數組

Tips 不會改變原數組,它返回過濾結果的新數組

六、reduce

方法參考文獻

調用

const result = arr.reduce((count, value, index, arr) => {
  return count + value
},initCount)

這個數組方法會返回一個數組每一項累加的結果值,這個方法有兩個參數:

第一個是回調函數,這個回調函數有四個參數,第一個是數組項每一次執行時上一次執行的累計結果,或者用戶自定義的初始累計結果,第二個是測試的數組每一項,第三個是測試數組每一項的下標索引,第四個是測試的原數組

第二個參數是初始累計結果,這個是用戶自定義的,若是定義了,則初始化執行時用這個值去累加數組第一項,並將累加的結果值做爲回調函數的第一個參數用於第二次累計的一個參數,依次循環下去,若是沒有,則默認數組第一項

七、reduceRight

這個方法跟reduce是一毛同樣的,只不過一個從左至右,一個是從右至左

方法異同點:

一、forEach是遍歷循環數組每一項,沒有返回結果,reduce是將數組每一項累計並返回最終累積值

二、everysome是返回一個布爾值,二者是相反的,前者是全部爲真,才返回true,不會終止後面項的執行,後者是隻要有一項爲真,則當即返回true,並結束後面項的執行

三、mapfilter是返回一個新數組,前者是返回數組每一項的計算結果的數組,後者是返回一個知足條件項的計算結果的數組

四、以上方法都不會改變原數組

相關文章
相關標籤/搜索