JavaScript基础入门-数组去重的深入应用
发布时间: 2024-02-19 08:45:53 阅读量: 58 订阅数: 24
# 1. JavaScript数组去重的基础知识
## 1.1 数组去重的概念和作用
在实际的JavaScript开发中,经常会遇到数组中含有重复元素的情况,这时需要对数组进行去重操作,以便于更高效地处理数据。数组去重就是指从数组中将重复的元素去除,使数组中的元素保持唯一性。
## 1.2 基本的数组去重方法
最简单的数组去重方法是利用双重循环进行遍历比较,然后将重复的元素去除。另外,还可以利用对象属性的唯一性来进行去重,以及利用Array的indexOf方法和includes方法等来判断元素是否已经存在于新数组中。
```javascript
// 使用双重循环进行数组去重
function unique(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
j = ++i;
}
}
result.push(arr[i]);
}
return result;
}
// 利用对象属性的唯一性进行数组去重
function uniqueByObj(arr){
var obj = {};
return arr.filter(function(item, index, array){
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
});
}
// 使用Array的indexOf方法进行数组去重
function uniqueByIndexOf(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (result.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
// 使用Array的includes方法进行数组去重
function uniqueByIncludes(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (!result.includes(arr[i])) {
result.push(arr[i]);
}
}
return result;
}
var arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // [1, 2, 3, 4, 5]
console.log(uniqueByObj(arr)); // [1, 2, 3, 4, 5]
console.log(uniqueByIndexOf(arr)); // [1, 2, 3, 4, 5]
console.log(uniqueByIncludes(arr)); // [1, 2, 3, 4, 5]
```
通过以上方法,可以将数组中重复的元素去除,获取到非重复的数组。
## 1.3 使用Set对象进行数组去重
ES6中提供了Set对象,可以轻松实现数组去重,因为Set对象的成员是唯一的,不会出现重复。可以通过将数组转换为Set对象,然后再转为数组的方式实现数组去重。
```javascript
function uniqueBySet(arr) {
return Array.from(new Set(arr));
}
var arr = [1, 2, 2, 3, 4, 4, 5];
console.log(uniqueBySet(arr)); // [1, 2, 3, 4, 5]
```
利用Set对象进行数组去重更加简洁和高效,是实际开发中常用的方法。
# 2. 利用filter方法实现数组去重
数组去重是在实际开发中经常会遇到的问题,之前我们介绍了基本的数组去重方法和利用Set对象进行数组去重的方式。在本章节中,我们将深入探讨如何利用数组的`filter`方法来实现数组去重,这是一种简洁高效的方式,让我们一起来了解吧。
### 2.1 理解filter方法及其用法
在JavaScript中,`filter`方法是用于筛选数组的元素,返回符合条件的新数组。它接收一个回调函数作为参数,在回调函数中要求返回一个布尔值来判断是否保留当前元素。如果返回`true`,则保留当前元素;如果返回`false`,则剔除当前元素。
```javascript
const arr = [1, 2, 3, 4, 5];
const filteredArr = arr.filter(item => item > 2);
console.log(filteredArr); // Output: [3,
```
0
0