如何避免在 ES9 中使用 Array.prototype.indexOf() 方法出现的错误

在 ES6 之前,我们经常使用数组的 indexOf() 方法来查找某个元素在数组中的下标位置,但是在 ES9 中,这个方法出现了一些问题,可能会带来一些错误。

indexOf() 方法的问题

当传入的查找元素不在数组中存在时,indexOf() 方法会返回 -1。但是,在 ES9 中,当传入的查找元素为 NaN 时,却会返回错误的下标位置,而不是 -1

例如:

----- --- - --- -- ---- ---

------------------------------ -- -

在这个例子中,我们期望会返回 -1,因为 NaN 不在数组中存在。但实际上返回了 2,这可能会导致一些难以发现和解决的错误。

解决方法

为了避免在 ES9 中出现这种错误,最好的解决方法是使用 Array.prototype.includes() 方法来检查数组中是否包含某个元素。

----- --- - --- -- ---- ---

------------------------------- -- ----

当查找元素不在数组中存在时,includes() 方法会返回 false,而不是 -1。同时,includes() 方法对于 NaN 的处理也是正确的,返回 true

示例代码

-- -- --- ---
----- ---- - --- -- ---- ---

------------------------------- -- -
-------------------------------- -- ----

-- --- --- ---
----- ---- - --- -- -- ---

------------------------------- -- --
-------------------------------- -- -----

结论

使用 Array.prototype.includes() 方法来代替 Array.prototype.indexOf() 方法,可以避免在 ES9 中出现查找 NaN 时返回错误的下标位置的问题。这是更加安全、可靠的做法。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66f7dae9c5c563ced5af00b2