[基礎] Array.prototype.indexOf()查詢方式

背景

最近在看Redux源碼,createStore用於註冊一個全局store,其內部維護一個Listeren數組,存放state變化時全部的響應函數。
其中store.subscribe(listener)用於註冊一個listener,同時返回一個unsubscribe方法,用於註銷當前註冊的listener。
源碼中查詢listener索引時用到了Array.indexOf方法,以下:
數組

一直用indexOf作值類型數組的查詢,故對於此種狀況記錄下函數

Array.prototype.indexOf函數

搜索Array對象的指定元素並返回該元素的索引prototype

var index = [].indexOf(item, start);
參數 描述
item 要查詢的元素
start 開始檢索的索引

此外還能夠使用其靜態方法3d

Array.indexOf(array,item,start)

調用indexOf,若是查詢到結果,返回對應的索引;不然返回-1指針

關於檢索元素的類型

indexOf能夠對一些簡單類型的數組進行檢索
code

但若是數組中元素是對象類型,是否也能夠用indexOf進行檢索呢?比較的依據是什麼呢?
對象

經過這組結果能夠看出,若使用indexOf檢索對象數組,比較的依據實際只進行指針相等斷定,而不會比較是否對象中各個值相等。
基於以上,咱們也能夠用這種方法檢索存在數組中的方法,就如Redux源碼中的用法
blog

總結

Array.prototype.indexOf能夠進行數組的檢索,對於值類型數組,經過值比較肯定相等;對於對象數組,經過指針比較肯定相等索引

相關文章
相關標籤/搜索