javascript的数组内置的一些方法有一些神奇的特性,写篇文章记录一下:
关于 indexOf()与lastIndexOf():
indexOf()与lastIndexOf()方法在比较数组值是否相等的时候使用的是全等运算符===
因此如果遇到Symbol类型,对象类型时会选择指针进行比较
而遇到NaN时也会遇到令人费解的情况
此处代码运行结果为:
而我们知道,在ES6中有一个类数组结构Set
在Set结构中,比较两个Set成员是否相同使用的也是相等运算符,但是它将所有的NaN都视作相等:
(此处mark一下:new Set() 自带解构方法 而 new Array()并不会自动解构)
代码运行结果为:
由此可知,Set结构将NaN视作单一值,而Array中,将NaN视作为非单一值