當前位置:
首頁 > 知識 > 「複雜數組元素」判斷數組中元素存在性的正確搞法

「複雜數組元素」判斷數組中元素存在性的正確搞法

點擊右上方紅色按鈕關注「小鄭搞碼事」,每天都能學到知識,搞懂一個問題!

今天講一個稍微複雜一點的數組的正確處理方式,數組元素是對象,如下。


const characters = [

{ id : 1, name: "小鄭" },

{ id : 2, name: "小鄭搞碼事" },

{ id : 3, name: "小鄭" },

{ id : 4, name: "小鄭搞" }

]

這個數組和簡單數組類型相較顯得結構複雜些,然而,目前這種形式的應用範圍卻是最廣的。所以,很有必要搞清楚它的一些正確的處理方式。以免犯錯。


一、需要考慮性能

如果我需要找出name等於"小鄭"的所有元素,那麼無疑filter是較好的處理方式。


let result = characters.filter((item, index) => {

console.log(index)

return item && item.name === "小鄭"

})

輸出結果是:


0,1,2,3

[{id: 1, name: "小鄭"},{id: 3, name: "小鄭"}]

注意到這種情況是需要遍歷所有元素的。

然而,如果你只是需要知道name="小鄭"的第一個元素情況,或者說只需要知道是否存在name="小鄭"的元素,那麼使用filter的性能消耗太大了,可以試試find 。


let result = characters.find((item, index) => {

console.log(index)

return item && item.name === "小鄭"

})

輸出結果是:


0

[{id: 0, name: "小鄭"}]

find函數不會遍歷所有數組元素,找到相符的一個元素就返回。


二、需要重審需求

有時候需要重審一下自己的需求,可能你只是想知道name="小鄭"這個元素是否存在,這看著就是一個是與否的問題,所以,返回布爾值才是最理想的。可以使用some。


let result = characters.some((item, index) => {

console.log(index)

return item && item.name === "小鄭"

})

返回結果:true

總結一下:

今天講了一些新方法正確使用的情況,還有一些新的方法,比如reduce,它又就是如何正確應用到代碼中的呢,有機會在來聊聊。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小鄭搞碼事 的精彩文章:

小鄭搞碼事:生成器(Generator)雖好理解,但需要注意一個問題

TAG:小鄭搞碼事 |