ES9 中的对象和数组的正确比较方法

在 JavaScript 中,我们经常需要比较对象和数组。然而,由于 JavaScript 中的对象和数组是引用类型,所以在比较时需要特别注意。在 ES9 中,引入了一些新的方法来正确比较对象和数组。

对象比较

在 JavaScript 中,对象的比较通常使用 ===== 运算符。然而,这种比较并不总是正确的。例如:

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

这是因为 obj1obj2 是两个不同的对象,它们的引用地址不同。所以,如果我们要比较两个对象的值是否相等,应该使用 Object.is() 方法。例如:

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

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

Object.is() 方法会比较两个值是否相等,包括 NaN 和 +0/-0。如果两个值相等,返回 true,否则返回 false。

数组比较

在 JavaScript 中,数组的比较也通常使用 ===== 运算符。然而,这种比较同样不总是正确的。例如:

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

这是因为 arr1arr2 是两个不同的数组,它们的引用地址不同。所以,如果我们要比较两个数组的值是否相等,应该使用 Array.from()Array.prototype.includes() 方法。例如:

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

Array.from() 方法会将一个类数组对象或可迭代对象转换成一个数组。然后,我们可以使用 every() 方法来比较两个数组的值是否相等。Array.prototype.includes() 方法则可以判断一个数组是否包含某个值。

结论

在 ES9 中,我们可以使用 Object.is() 方法来正确比较两个对象的值是否相等,使用 Array.from()Array.prototype.includes() 方法来正确比较两个数组的值是否相等。这些方法可以帮助我们避免因为引用地址不同而导致的错误比较。

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