js数组和Set结构的一些诡异特性

javascript的数组内置的一些方法有一些神奇的特性,写篇文章记录一下:

关于 indexOf()与lastIndexOf():

  indexOf()与lastIndexOf()方法在比较数组值是否相等的时候使用的是全等运算符===

  因此如果遇到Symbol类型,对象类型时会选择指针进行比较 

而遇到NaN时也会遇到令人费解的情况

    

indexOf(NaN)

此处代码运行结果为:

而我们知道,在ES6中有一个类数组结构Set

在Set结构中,比较两个Set成员是否相同使用的也是相等运算符,但是它将所有的NaN都视作相等:

(此处mark一下:new Set() 自带解构方法 而 new Array()并不会自动解构)


构造一个Set

代码运行结果为:


由此可知,Set结构将NaN视作单一值,而Array中,将NaN视作为非单一值

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容