ES6新增語法—數(shù)組新增七種方法介紹
forEach:遍歷數(shù)組
foreach只是對數(shù)組進(jìn)行遍歷,并不會改變原來的數(shù)組。
示例:打印數(shù)組中的每個(gè)元素。
- let arr = ['a','b','c'];
- arr.forEach(item=>{
- console.log('當(dāng)前元素',item)
- })
上述使用了箭頭函數(shù),省略了括號,如果需要數(shù)組下標(biāo)的時(shí)候,可以把標(biāo)加上,改寫成:
- let arr = ['a','b','c'];
- arr.forEach((item,index)=>{
- console.log('當(dāng)前元素',item)
- console.log('當(dāng)前元素下標(biāo)',index)
- })
如果是給同級的幾個(gè)元素遍歷設(shè)置背景顏色時(shí),運(yùn)行發(fā)現(xiàn)失敗,代碼如下:
- window.onload = function(){
- let aDiv = document.getElementsByTagName('div')
- aDiv.forEach(item=>{
- item.style.background = "red"
- })
- }
運(yùn)行報(bào)錯(cuò):Uncaught TypeError: aDiv.forEach is not a function at window.onload
報(bào)錯(cuò)主要是因?yàn)?aDiv 并不是一個(gè)真正的數(shù)組,它是一個(gè)類數(shù)組。此時(shí)我們需要借助from方法。
from:轉(zhuǎn)換數(shù)組
from()方法把類數(shù)組轉(zhuǎn)換成真正的數(shù)組。
使用語法:Array.from(類數(shù)組)
此時(shí)我們只需要借助from方法,把a(bǔ)Div轉(zhuǎn)換成真正的數(shù)組,就可以使用forEach遍歷,給每個(gè)元素設(shè)置背景。代碼如下:
- window.onload = function(){
- let aDiv = document.getElementsByTagName('div')
- Array.from(aDiv).forEach(item=>{
- item.style.background = "red"
- })
- }
map:映射
原數(shù)組被映射成一個(gè)新的數(shù)組。返回值是一個(gè)新數(shù)組,不改變原來的數(shù)組。
將一組成績映射成是否及格的布爾值,判斷大于60分就算及格,否則就不及格。代碼如下:
- let grad = [55,66,77,88]
- let arr2 = grad.map(function(item){
- return item>=60
- })
- console.log("arr2",arr2)
filter:過濾
Filter過濾數(shù)組,進(jìn)去一堆出來幾個(gè),返回過濾后的新數(shù)組。
比如去掉數(shù)組中的偶數(shù),只保留奇數(shù)。
- let num = [1,2,3,4,5,6,7,8]
- let odd = num.filter(function(item){
- return item%2
- })
- console.log("odd",odd)
reduce:匯總
進(jìn)去一堆數(shù)據(jù),出來一個(gè)。比如求和或者求平均數(shù)。
以下是求平均數(shù)的一個(gè)實(shí)例:
- let num = [1,2,3,4,5,6,7,8]
- let evr = num.reduce((tmp,item,index)=>{
- if( index<num.length ){
- return tmp+item
- }else{
- return (tmp+item)/num.length
- }
- })
上述的tmp是中間的一個(gè)結(jié)果,最開始是第一個(gè)值。
find:查找
在數(shù)組中找到符合要求的對象,和filter的區(qū)別是找到符合要求的對象就停止搜索了,返回的是一個(gè)對象。
查找姓名叫王五的這個(gè)人,代碼如下:
- let pers = [
- { name:'倩倩',age:18 },
- { name:'張三',age:25 },
- { name:'王五',age:60 }
- ]
- let per = pers.find(function(item){
- return item.name === '王五'
- })
- console.log('per',per)//per {name: "王五", age: 60}
erver()、some()
every目標(biāo)數(shù)組中每一個(gè)對象都符合條件則返回true,否則返回false。
some目標(biāo)數(shù)組中有一個(gè)或一個(gè)以上符合條件就會返回true,否則返回false。
- let pers = [
- { name:'倩倩',age:18 },
- { name:'張三',age:25 },
- { name:'王五',age:60 }
- ]
- //年齡是否都小于30
- let isYoung = pers.every(item=>{
- return item.age < 30
- })
- //年齡有小于30的
- let haveYoung = pers.some(item=>{
- return item.age < 30
- })
- console.log("isYoung",isYoung) // false
- console.log("haveYoung",haveYoung) //true