陣列的五個迭代方法
阿新 • • 發佈:2021-11-08
前言
ECMAScript 為陣列定義了 5 個迭代方法:
每個方法都會接收兩個引數:執行的函式以及作為函式執行上下文的作用域物件。其中執行的函式接收 3 個引數:陣列元素、元素索引和陣列本身。這些方法都不改變呼叫它們的陣列。
對比區別
在這些方法中,every() 和 some()是最相似的,都是從陣列中搜索符合某個條件的元素。雖相似但還是有區別的,如下
<script> let arr = [4,5,1,7,6,8,66,9,88]; let everyResult = arr.every((item,index,array) => item > 7); let someResult= arr.some((item,index,array) => item > 7);
console.log(everyResult);//false console.log(someResult) //true </script>
- 對於 every(),數組裡的每一項都必須滿足函式才會返回 true,否則返回 false.
- 對於 some(),數組裡只要一項傳入函式並滿足函式就會返回 true.
接下來我們再來看看 filter() ,這個方法基於給定的函式來決定某一項是否應該包含在它返回的陣列中。比如,要返回所有數值都大於 2 的陣列,如下:
<script> let arr = [4,5,1,7,6,8,66,9,88]; let filterResult = arr.filter((item,index,array) => item > 7); console.log(filterResult);//[8,66,9,88] </script>
這個方法比較適合從陣列中篩選滿足給定條件的元素。
我們再來看看 map() ,這個方法也會返回一個數組。但是它返回的陣列是對原始陣列中同樣位置的元素執行傳入函式而返回的結果,如下:
<script> let arr= [4,5,1,7,66,88]; let mapResult1 = arr.map((item,index,array) => item > 7); let mapResult2 = arr.map((item,index,array) => item * 2); console.log(mapResult1);//[false,false,false,false,true,true] console.log(mapResult2);//[8,10,2,14,132,176] </script>
這個方法非常適合建立一個與原始陣列元素一一對應的新陣列。
最後,我們來看一下 forEach() ,這個方法只會對每一項執行傳入的函式,沒有返回值。本質上,就相當於使用 for 迴圈遍歷陣列,如下:
<script> let arr = [4,5,1,7,66,88]; arr.forEach((item,index,array) => { //執行某些操作 }); </script>
好了,陣列的五個迭代方法介紹完畢(*^▽^*)