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