JavaScript(JS)中有多种方法可以实现数组去重。以下是一些常见的方法:
-
使用
Set
对象 :
Set
对象是一个集合,它存储唯一值,自动去重。这是一个简单且高效的方法。javascriptconst array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = [...new Set(array)]; console.log(uniqueArray); // [1, 2, 3, 4, 5]
-
使用
filter
和indexOf
方法 :通过
filter
方法结合indexOf
来检查元素是否在数组中的特定位置。javascriptconst array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = array.filter((item, index) => array.indexOf(item) === index); console.log(uniqueArray); // [1, 2, 3, 4, 5]
-
使用
reduce
方法 :使用
reduce
方法构建一个新的数组,同时确保每个元素都是唯一的。javascriptconst array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = array.reduce((accumulator, currentValue) => { if (accumulator.indexOf(currentValue) === -1) { accumulator.push(currentValue); } return accumulator; }, []); console.log(uniqueArray); // [1, 2, 3, 4, 5]
-
使用对象(Object)或 Map :
通过将数组元素作为对象的键来实现去重。
javascriptconst array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = Array.from(new Map(array.map((item) => [item, 1]))).map(item => item[0]); console.log(uniqueArray); // [1, 2, 3, 4, 5]
-
排序后去重 :
对数组进行排序,然后去除相邻的重复项。
javascriptconst array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = [...new Set(array.sort((a, b) => a - b))]; console.log(uniqueArray); // [1, 2, 3, 4, 5]
-
使用扩展运算符(...)和
join
/split
:这是一种比较不常见的方法,利用字符串的
join
和split
方法来去重。javascriptconst array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = [...new Set(array.join(',').split(',').map(Number))]; console.log(uniqueArray); // [1, 2, 3, 4, 5]
选择哪种方法取决于具体需求和数组的特点。例如,如果需要保持数组的原始顺序,则可能需要避免使用排序方法。如果数组很大,那么 Set
方法可能更高效。