更好的使用數(shù)組


?Array.includes() 代替Array.indexOf()

1. indexOf()? 返回在數(shù)組中可以找到一個(gè)給定元素第一個(gè)索引,沒有找到返回-1 ,如果只是需要找到數(shù)組是否存在某一個(gè)元素,返回一個(gè)布爾值,則我們可以使用includes()

2. Array.includes() 數(shù)組是否包含給定的元素,返回布爾值

```

let arr = ['abc','book','map']

arr.includes('book') // true

arr.indexOf('book') // 1

```

?Array.fined()代替Array.finter()

1. finter() 通過回調(diào)函數(shù)過濾數(shù)組,并將過濾后的項(xiàng)作為新數(shù)組返回,如果只需要查找某一個(gè)唯一id,建議使用fined()<br/>

2. fined() 通過調(diào)用回調(diào)函數(shù)來過濾,只返回復(fù)合條件的第一項(xiàng),當(dāng)找到第一個(gè)符合回調(diào)函數(shù)過濾條件的第一個(gè)數(shù)據(jù)時(shí),就立即停止往下搜尋

```

let arr = [{name:'abc',id:110},{name:'book',id:120},{name:'map',id:130},{name:'book',id:140}]

arr.finter(i =>i.name==='book') //[{name:'book',id:120},{name:'book',id:140}]

arr.fined(i=>i.name === 'book') // [{name:'book',id:120}]

```

Array.some() 取代Array.fined()

1. Array.fined() 返回符合回調(diào)函數(shù)的第一個(gè)元素,如果需要判斷數(shù)組是否存在某一個(gè)元素,用fined() 就不合適,fined() 返回一個(gè)元素,

2. Array.some() 判斷是否存在某元素,返回布爾值

```

let arr = [{name:'abc',id:110},{name:'book',id:120},{name:'map',id:130},{name:'book',id:140}]

arrt.some(i =>i.name ==='book')// true

注:如果有多個(gè)相同名稱元素,也只會返回true

```

注:Array.includes() 和Array.some() 都返回布爾值,一旦找到對應(yīng)值,就立即停止遍歷數(shù)組,不同的是:some()的參數(shù)是回調(diào)函數(shù),includes() 的參數(shù)是一個(gè)值。

includes() 更簡單,some() 更具可操作性

Array.reduce()替代Array.filter()和Array.map()組合

1. filter返回過濾后的一個(gè)新數(shù)組,map也是返回過濾后的新數(shù)組,造成了我們遍歷了兩次數(shù)組,第一次是過濾原數(shù)組以獲取長度稍短的新數(shù)組,第二次是map對filter返回的新數(shù)組進(jìn)行加工,再次創(chuàng)造了一個(gè)新數(shù)組,并最終得到最終的結(jié)果,每一個(gè)方法都有一個(gè)回調(diào)函數(shù),而filter提供給map使用的臨時(shí)數(shù)組是無法復(fù)用的

2. reduce 允許將過濾后加工過的項(xiàng)放進(jìn)累加器,累加器可以是待遞增的數(shù)字,待填充的對象、待拼接的字符串或數(shù)組等

```

let arr = [{name:'abc',id:110},{name:'book',id:120},{name:'map',id:130},{name:'book',id:140}]

arr.reduce((acc,arr)=>{

? ? return arr.name==='book'?acc.concat(Object.assign({},arr,{age:['2018']}):acc):

},[])

//[{name: "book", id: 120, age: ['2018']},{name: "book", id: 140, age: ['2018']}]

arr.filter(i=>i.name==='book').map(i =>Object.assign({},i,{age:['2018']}))

//[{name: "book", id: 120, age: ['2018']},{name: "book", id: 140, age: ['2018']}]

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載:在開發(fā)中,數(shù)組的使用場景非常多,平日中也涉及到很多數(shù)組的api/相關(guān)操作,一直也沒有對這塊內(nèi)容進(jìn)行一塊整理總...
    七色煙火閱讀 3,385評論 0 3
  • 這是第二個(gè)周計(jì)劃,加入時(shí)間管理司馬騰學(xué)院,生活一步步規(guī)律起來,自己的內(nèi)心更加充實(shí),快樂,因?yàn)橛腥伺悖惺伦?,學(xué)會了...
    迎風(fēng)奔跑2021閱讀 260評論 0 0
  • 你,有壓力嗎? 生活、工作、家庭、孩子、婚姻、社交、學(xué)習(xí)。。。 在這高速運(yùn)轉(zhuǎn)的環(huán)境里,無論來自哪方面的壓力,都會或...
    子夜在路上閱讀 222評論 0 0
  • 新化縣城依江而建,這條江叫資江,發(fā)源于廣西資源縣。 新化是農(nóng)業(yè)縣,也正因?yàn)楣I(yè)項(xiàng)目少,再加上近年來重視環(huán)保,江水質(zhì)...
    張津華閱讀 583評論 0 0
  • 今天農(nóng)產(chǎn)品空頭繼續(xù)發(fā)力,豆一直接加滿,白糖也加了一個(gè)單位。 其實(shí)鋁不應(yīng)該開倉,保證金占用太高,下周不能開倉了,擇機(jī)...
    會飛的土筍凍閱讀 250評論 0 0

友情鏈接更多精彩內(nèi)容