Javascript 数组的排序和去重

在前端开发中,处理数组是十分常见的操作。其中,对数组进行排序和去重是经常使用的操作。本文将详细介绍Javascript数组的排序和去重。

排序

Javascript提供了sort()方法用于对数组进行排序。sort()方法会改变原数组,而不是返回一个新的排序后的数组。

sort()方法的用法

sort()方法可以不带参数,也可以接收一个回调函数作为参数。

  1. 不带参数时,默认按照Unicode编码的顺序进行排序:
----- --- - ---- -- -- ---
-----------
----------------- -- -- --- --- -- --

由于默认情况下,sort()方法会将数组中的元素都视为字符串类型,所以将数字 10 排在了数字 2 的前面。

  1. 带参数时,需要传入一个比较函数作为参数。该函数接收两个参数,表示要比较的两个元素,返回值有三种情况:
  • 返回小于0的数:表示第一个参数排在第二个参数之前;
  • 返回等于0的数:表示第一个参数和第二个参数相等;
  • 返回大于0的数:表示第一个参数排在第二个参数之后。

以从小到大排序为例:

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

注意事项

  • sort()方法会改变原数组,所以在排序之前最好先备份原数组。
  • 如果数组元素是对象类型,则需要在比较函数中指定比较哪个属性值。

去重

Javascript可以使用Set数据结构或者ES6的Array.from()方法实现数组去重。

Set数据结构

Set是ES6新增的一种数据结构,用于存储不重复的值。通过将数组作为Set的构造函数参数,可以很方便地实现数组去重。

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

Array.from()方法

Array.from()方法可以将类似数组的对象和可迭代对象转换成真正的数组。由于Set是可迭代对象,因此可以使用该方法将Set转换成数组。

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

注意事项

  • 在使用Set进行去重时,数组中的NaN、undefined等特殊值可以被正确去重;
  • 如果数组元素是对象类型,Set不能进行深度去重,仅能去重对象的引用。

总结

本文介绍了Javascript数组的排序和去重操作,其中排序可以使用sort()方法实现,而去重可以使用Set数据结构或者Array.from()方法实现。在实际开发中,需要根据具体情况选择合适的方法,并注意一些注意事项。

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