简述Javascript数组怎么去重有哪些?(方法) ?
参考回答
JavaScript 中去重数组的方法有以下几种常见方式:
1. 使用 Set
2. 使用 filter() + indexOf()
3. 使用 reduce() + includes()
4. 使用 for 循环和对象/Map
详细讲解与拓展
- 使用
Set:
Set是一种数据结构,它只允许存储唯一的值,因此使用Set可以轻松实现数组去重。const arr = [1, 2, 2, 3, 4, 4]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // [1, 2, 3, 4]这里,我们通过将数组传入
Set中,Set会自动去掉重复的元素,然后使用展开运算符(...)将其转换回数组。 -
使用
filter()+indexOf():
filter()方法可以通过回调函数筛选出符合条件的元素,indexOf()用来判断当前元素在数组中第一次出现的位置,如果当前索引与第一次出现的位置一致,就保留该元素。const arr = [1, 2, 2, 3, 4, 4]; const uniqueArr = arr.filter((value, index, self) => self.indexOf(value) === index); console.log(uniqueArr); // [1, 2, 3, 4]filter()方法会检查每个元素的索引是否是该元素第一次出现的位置,从而实现去重。 -
使用
reduce()+includes():
reduce()方法可以累加处理数组中的元素,includes()用来判断当前元素是否已经在累积的数组中,若没有则加入去重数组。const arr = [1, 2, 2, 3, 4, 4]; const uniqueArr = arr.reduce((acc, value) => { if (!acc.includes(value)) { acc.push(value); } return acc; }, []); console.log(uniqueArr); // [1, 2, 3, 4]在此方法中,
reduce()逐个处理数组元素,将不重复的元素添加到结果数组acc中。 -
使用
for循环和对象/Map:
通过for循环遍历数组,将每个元素作为对象的属性或Map的键来确保元素唯一性。对象的键是唯一的,因此可以用来去重。const arr = [1, 2, 2, 3, 4, 4]; const uniqueArr = []; const seen = {}; for (let i = 0; i < arr.length; i++) { if (!seen[arr[i]]) { uniqueArr.push(arr[i]); seen[arr[i]] = true; } } console.log(uniqueArr); // [1, 2, 3, 4]通过
seen对象来记录出现过的元素,确保每个元素只添加一次。
总结
JavaScript 中去重数组的常见方法包括使用 Set,filter() 配合 indexOf(),reduce() 配合 includes(),以及 for 循环结合对象/Map。这些方法都可以有效地去除数组中的重复元素,但在性能和适用场景上可能会有所不同。