js实现数组去重的所有方法
时间: 2023-05-18 12:04:01 浏览: 103
1. 使用 Set
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
2. 使用 filter
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
3. 使用 reduce
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
4. 使用 Map
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const map = new Map();
arr.forEach(item => map.set(item, true));
const uniqueArr = [...map.keys()];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
5. 使用 Object
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const obj = {};
arr.forEach(item => obj[item] = true);
const uniqueArr = Object.keys(obj).map(item => parseInt(item));
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
6. 使用 includes
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = [];
arr.forEach(item => {
if (!uniqueArr.includes(item)) {
uniqueArr.push(item);
}
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
7. 使用 splice
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) !== i) {
arr.splice(i, 1);
i--;
}
}
console.log(arr); // [1, 2, 3, 4, 5]
```
8. 使用 sort
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
arr.sort();
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
9. 使用 ES6 中的 from 和 of
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
10. 使用 ES6 中的 Array.from 和 Set
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = [...new Set(Array.from(arr))];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
阅读全文