迭代方法:1、map,用於根據某種規則映射數組,得到映射之後的新數組;2、filter,用於根據判斷的條件,進行元素篩選;3、forEach,相當於使用for迴圈遍歷數組;4、some,用於判斷數組中是否有滿足條件的元素;5、every,用於判斷數組中是否所有元素都滿足條件;6、findIndex,用於找元素下標;7 、reduce,可遍歷數組元素,為每個元素執行一次回呼函數。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
Array應該是es6中最常用的類型了,它和其他語言中的數組一樣也是一組有序的數據,但是不同的是,ECMAscript數組中數組的每個槽位可以儲存任意類型的數據,意思是說,我們可以在第一個槽位中儲存字串,第二個是數值,第三個是物件。而ECMAscript數組最常使用的就是迭代方法,以下來為大家詳細介紹一下。
ES6陣列的7種迭代方法
#1、map()方法
對數組每一項都傳入運行函數,傳回由每次函數呼叫的結果所構成的陣列。
作用: 根據某種規則映射數組,得到映射之後的新數組
應用場景:
(1)數組中所有的元素* 0.8
(2)將陣列中的js對象,映射成html字串
範例:
const arr = [10,20,30,40,50] // 完整写法 // let res = arr.map((item,index)=>{ // return item * 0.8 // }) // 熟练写法 let res = arr.map(item=>item*0.8) console.log(res) // 返回处理后的新数组 [8, 16, 24, 32, 40]
2、filter()方法
#對陣列每一項都傳入運算函數,函數傳回true的項會組成數組之後返回。
作用:依照判斷的條件,進行篩選。
應用情境:
(1)篩選陣列中的偶數
(2)商品價格篩選
範例:
//需求: 筛选数组里的偶数 const arr = [10,20,33,44,55] // let res = arr.filter(item=>{ // if(item % 2 == 0){ // return true // } else{ // return false // } // }) // console.log(res) let res1 = arr.filter(item => item % 2==0) console.log(res1) // [10, 20, 44]
#3、forEach()方法
對數組每一項都傳入運行函數,沒有回傳值。
作用:相當於for迴圈另一種寫法
應用場景:遍歷陣列
範例:
// 类似for循环遍历 const arr = [13,22,10,55,60] arr.forEach((item,index)=>{ console.log(item,index) // item->数组里每一个元素 // index->对应的下标 })
4、some()方法
對陣列每一項都傳入運算函數,若有一項函數傳回true,則這個方法傳回true。
作用:判斷陣列中是否有滿足條件的元素(邏輯或||, 有任意一個滿足即可)
應用場景:
(1)判斷數組中有沒有奇數
(2)非空判斷: 判斷表單數組中,有沒有元素value為空
#範例:判斷是否有奇數
// 判断是否有奇数 const arr = [10,20,30,40,50] // let res = arr.some(item=>{ // if(item % 2 == 1){ // return true // } else{ // return false // } // }) let res = arr.some(item =>item % 2 == 1) console.log(res) // true: 有满足条件的元素 // false: 没有满足条件的元素
#5、every()方法
對數組每一項都傳入運行函數,若每一項都回傳true,則這個方法為true。
作用:判斷數組中是否所有元素都滿足條件(邏輯&&, 全部滿足)
#應用場景:
(2)開關想法: 購物車是否全選
範例:判斷是否全數是偶數
// 判断是否全是偶数 const arr = [10,20,30,40,50] // let res = arr.some(item=>{ // if(item % 2 == 1){ // return true // } else{ // return false // } // }) let res = arr.every(item =>item % 2 == 0) console.log(res) // true: 所有满足都满足条件 // false: 有元素不满足条件
找元素下標
應用場景:
#(1)如果陣列中是值類型,找元素下標用: arr.indexOf( 元素)(2)如果數組中是引用型,找元素下標: arr.findIndex( )
############################ ###範例:###/* arr.findIndex()查询数组下标 如果找到目标元素,则返回改数组的下标 如果没找到,则返回固定值-1 */ let arr = [ {name:'李四',age:20}, {name:'王五',age:20}, {name:'张三',age:20}, ] let index = arr.findIndex(item=>item.name == '王五') console.log(index)
const arr = [10,20,30,40,50] let res = arr.reduce((sum,item,index)=>{ return sum + item // console.log(sum,item,index) },0)
every()和some()
这些方法中,every()和some()是最相似的,都是从数组中搜素符合某个条件的元素。对every()来说,传入的参数必须对每一项都返回true,它才会返回true。而对于some()来说,只要有一项让传入的函数返回true,它就返回true,下面举个例子:
let numbers = [2,1,4,3,5,4,3]; let everyResult = numbers.every((item,index,array) => item >2); console.log(everyResult); // false let someResult = numbers.some((item,index,array) => item >2); console.log(someResult); // true
filter()方法
这个方法基于给定的函数来决定每一项是否应该包含在它返回的数组中。例如:
let numbers = [2,1,4,3,5,4,3]; let filterResult = numbers.filter((item,index,array) => item >2); console.log(filterResult); // 4,3,5,4,3
这里filter返回的数组包含了4,3,5,4,3,因为只有对这些项传入的函数才返回 true,这个方法非常适合从数组中筛选满足给定条件的元素,也是非常常用的迭代方法。
map()
map()方法也是返回一个数组。这个数组的每一项都是对原始数组中同样位置的元素运行传入函数而返回的结果,例如,可以将数组中的每一项都乘以2,并返回包含所有结果的数组,如下:
let numbers = [2,1,4,3]; let mapResult = numbers.map((item,index,array) => item *2); console.log(mapResult); // 4,2,8,6
这个方法返回的数组包含了原始数组中每给数值乘以2的结果。这个方法很适应于创建一个与原数组一一对应的新数组。
forEach()
最后看一看forEach这个方法,这个方法只会对每一项运行传入的函数,没有返回值。其实,本质上,forEach()方法相当于使用for循环遍历数组。例如:
let numbers = [2,1,4,3]; numbers.forEach((item,index,array) => { console.log(item) }); // 2,1,4,3
【相关推荐:javascript视频教程、编程视频】
以上是es6中迭代數組的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!