[基础] 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能够进行数组的检索,对于值类型数组,经过值比较肯定相等;对于对象数组,经过指针比较肯定相等索引

相关文章
相关标签/搜索