@TOC
JavaScript中数组去重的方式有哪些,比较常用哪个?
在JavaScript中,有几种常见的数组去重方式。以下是一些常见的方法,以及它们的优缺点:
1. 使用 Set:
const myArray = [1, 2, 2, 3, 4, 4, 5]
const uniqueArray = [...new Set(myArray)]
console.log(uniqueArray)
- 优点: Set 中的元素是唯一的,可以轻松实现去重。
- 缺点: 原始数组中的元素顺序可能不会被保留,且Set是ES6中的特性。
2. 使用 filter 和 indexOf:
const myArray = [1, 2, 2, 3, 4, 4, 5]
const uniqueArray = myArray.filter((value, index, self) => self.indexOf(value) === index)
console.log(uniqueArray)
- 优点: 保留了原始数组中的元素顺序。
- 缺点: 对于大型数组来说,性能可能不如 Set。
3. 使用 reduce:
const myArray = [1, 2, 2, 3, 4, 4, 5]
const uniqueArray = myArray.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue)
}
return accumulator
}, [])
console.log(uniqueArray)
- 优点: 可以保留原始数组中的元素顺序。
- 缺点: 对于大型数组来说,性能可能相对较低。
4. 使用 Map:
const myArray = [1, 2, 2, 3, 4, 4, 5]
const uniqueArray = Array.from(new Map(myArray.map(value => [value, value])).values())
console.log(uniqueArray)
- 优点: 可以保留原始数组中的元素顺序。
- 缺点: 相对于 Set,可能性能稍逊。
常用方式:
-
使用 Set 的方式 是目前在实际开发中应用较广泛的方法。它简洁、直观,并且能够高效地去重。在不需要保留原始数组元素顺序的情况下,这是推荐的方式。
-
如果需要保留原始数组中的元素顺序,而且不使用ES6特性的话,使用 filter 和 indexOf 的方式 是一个不错的选择。
选择去重方式时,可以根据实际需求和性能考虑来决定使用哪种方法。
持续学习总结记录中,回顾一下上面的内容: 在JavaScript中,有几种常见的数组去重方式。Set、filter 和 indexOf、reduce、Map 使用 Set 的方式 是目前在实际开发中应用较广泛的方法。它简洁、直观,并且能够高效地去重。在不需要保留原始数组元素顺序的情况下,这是推荐的方式。