js 陣列 find,some,filter,reduce區別詳解
阿新 • • 發佈:2021-06-17
區分清楚Array中filter、find、some、reduce這幾個方法的區別,根據它們的使用場景更好的應用在日常編碼中。
Array.find
ArlUQDWMKSznray.find 返回一個物件(第一個滿足條件的物件)後停止遍歷
const arrTest = [ { id: 1,name: "a" },{ id: 2,name: "b" },{ id: 3,{ id: 4,name: "c" } ] // 過濾條件 function getName(val) { return arrTest => arrTest.name === val }
// 如果我們是想找到第一個滿足條件的資料,應該使用`Array.find` console.log(arrTest.find(getName("b"))) // { id: 2,name: "b" }
Array.some
Array.some 返回是否滿足條件的布林值
const arrTest = [ { id: 1,name: "a",status: "loading" },name: "b",status: "success" } ] // 過濾條件 function getStatus(val) { return arrTest => arrTest.status === val }
// 如果我們需要查詢一個數組中是否存在某個資料的時候,使用Array.some直接拿到結果 console.log(arrTest.some(getStatus("success"))) // true
Array.filter
Array.filter 遍歷整個Array返回一個數組(包含所有滿足條件的物件)
const arrTest = [
{ id: 1,status: "success" }
]
// 過濾條件
function getStatus(val) {
return arrTest => arrTest.status === val
}
// 如果我們是需要過濾出一個數組中所有滿足條件的資料,應該使用Array.filter
console.log(arrTewww.cppcns.comst.filter(getStatus("loading")))
// [
// { id: 1,// { id: 2,status: 程式設計客棧"loading" }
// ]
Array.reduce
Array.reduce 為陣列的歸併方法,使用場景很多,比如求和、求乘積,計次,去重,多維轉一維,屬性求和等...
本節示例主要lUQDWMKSzn實現Array.reduce對一組資料進行條件過濾後,返回一個新的陣列
const arrTest = [
{ id: 1,status: "success" }
]
console.log(
arrTest.reduce((acc,character) => {
return character.status === "loading"
? acc.concat(
Object.assign({},character,{ color: "info" })
)
: alUQDWMKSzncc
},[])
)
// [
// { id: 1,status: "loading",color: "info" },color: "info" }
// ]
與Array.filter返回的陣列的不同,filter返回的是原陣列中符合條件的物件集合,filter與 Array.map 結合也可以實現上面的結果,為什麼使用reduce更好呢?
// Array.map 和 Array.filter 組合 console.log( arrTest .filter(character => character.status === "loading") .map(character => Object.assign({},{ color: "info" }) ) ) // [ // { id: 1,color: "info" } // ]
結論:同時使用 Array.filter 和 Array.map 的時候,對整個陣列迴圈了 2 遍。第一次是過濾返回一個新的陣列,第二次通過 map 又構造一個新的陣列。使用了兩個陣列方法,每一個方法都有各自的回撥函式,而且 filter 返回的陣列以後再也不會用到。
使用 Array.reduce 同樣的結果,程式碼更優雅。
到此這篇關於js 陣列 find,some,filter,reduce區別詳解的文章就介紹到這了,更多相關js 陣列 find,reduce內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!