美文网首页
Array indexOf 和 includes 的区别

Array indexOf 和 includes 的区别

作者: 莫帆海氵 | 来源:发表于2021-04-07 22:31 被阅读0次

返回值不同

  • indexOf 返回数值类型,表示当前第一个匹配到的数组索引
  • includes 返回布尔类型,判断是否在数组中存在这个值

比较算法的差异

  • indexOf 使用严格相等来比较是否相等
  • includes 使用 sameValueZero 算法来比较是否相同

ES2015 有四种相等算法:

  • 一般相等比较
  • 严格相等比较(===),用于indexOf 且是大小写匹配的
  • SameValueZero,自 ES2016 开始,用于 ArrayBuffer 构造函数,以及 Map 和 Set 操作以及 includes 方法
  • 相同值,其它地方使用

SameValueZero 和 === 的区别:

// 只在于对 NaN 值的处理

[NaN, NaN].indexOf(NaN)
> -1
[NaN, NaN].includes(NaN)
> true

参考
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness

相关文章

网友评论

      本文标题:Array indexOf 和 includes 的区别

      本文链接:https://www.haomeiwen.com/subject/ebppkltx.html