ES7 中的 Array.prototype.sort 方法排除数组中 NaN 元素

ES7 中的 Array.prototype.sort 方法排除数组中 NaN 元素

在 ES7 中,Array.prototype.sort 方法可以用来对数组进行排序。但是,如果数组中存在 NaN 元素,排序结果可能会出现问题。这是因为 NaN 和任何其他值都不相等,所以排序时会出现不确定的情况。

为了解决这个问题,ES7 中的 Array.prototype.sort 方法新增了一个可选参数 compareFunction。通过指定一个 compareFunction,可以排除数组中的 NaN 元素,从而得到正确的排序结果。

compareFunction 是一个函数,接受两个参数,表示要比较的两个元素。如果第一个元素应该排在第二个元素之前,返回一个负数;如果两个元素相等,返回 0;如果第一个元素应该排在第二个元素之后,返回一个正数。

下面是一个示例代码,演示了如何使用 compareFunction 排序一个数组,并排除其中的 NaN 元素:

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

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

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

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

在上面的代码中,compareFunction 首先判断两个元素是否都是 NaN,如果是,则返回 0,表示两个元素相等。如果只有一个元素是 NaN,那么它应该排在数组的最后面,返回 1 或 -1。最后,如果两个元素都不是 NaN,那么按照它们的大小关系返回正数或负数,表示它们在排序后的位置关系。

通过使用 compareFunction,我们可以正确地将数组排序,并排除其中的 NaN 元素。这个技巧在实际开发中非常有用,可以避免因为 NaN 元素而导致的不确定行为,提高代码的可靠性和稳定性。

总结

ES7 中的 Array.prototype.sort 方法新增了一个可选参数 compareFunction,可以用来排除数组中的 NaN 元素,得到正确的排序结果。使用 compareFunction 可以提高代码的可靠性和稳定性,避免因为 NaN 元素而导致的不确定行为。

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