数组对象去重的5种方法
1. 使用Set对象
在ES6中引入了Set对象,它是一种无重复值的有序集合。使用Set对象可以很方便地去除数组中的重复项。下面是使用Set对象去重的示例代码:
```javascript
let arr = [1, 2, 3, 3, 4, 4, 5];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr);  // [1, 2, 3, 4, 5]
```
解释:首先我们创建了一个数组 `arr`,其中包含了重复的项。然后通过将数组转换为Set对象,再使用扩展运算符(`...`)将Set对象转换为数组,最终得到了去重后的数组 `uniqueArr`。
2. 使用filter方法
`filter` 方法接受一个回调函数作为参数,该回调函数会对数组中的每个元素进行判断,只有返回值为 `true` 的元素才会被保留下来。下面是使用 `filter` 方法进行去重的示例代码:
```javascript
let arr = [1, 2, 3, 3, 4, 4, 5];
let uniqueArr = arr.filter((item, index, array) =>
return array.indexOf(item) === index;
});
console.log(uniqueArr);  // [1, 2, 3, 4, 5]
```
解释:回调函数中的 `index` 是当前元素在数组中的索引,`array` 是原始数组。通过使用 `i
ndexOf` 方法判断元素在数组中的第一个索引是否等于当前索引,从而实现去重的目的。
3. 使用reduce方法
`reduce` 方法可以对数组中的每个元素进行累加,并将最终结果返回。我们可以结合使用 `reduce` 方法和一个空数组,通过判断结果数组中是否已经存在当前元素,从而实现去重的功能。下面是使用 `reduce` 方法进行去重的示例代码:
```javascript
let arr = [1, 2, 3, 3, 4, 4, 5];
let uniqueArr = duce((prev, cur) =>
if (!prev.includes(cur))
prev.push(cur);
}
return prev;
},[]);
filter过滤对象数组
console.log(uniqueArr);  // [1, 2, 3, 4, 5]
```
解释:初始值为一个空数组 `[]`,`prev` 是上一次回调函数的返回值,`cur` 是当前元素。通过判断结果数组 `prev` 中是否包含当前元素,如果不包含则将当前元素添加到 `prev` 中。
4. 使用Map对象
`Map` 对象是一种键值对的有序列表,它的键是唯一的,可以根据键对值进行存储和访问。可以借助 `Map` 对象的特性实现数组去重。下面是使用 `Map` 对象进行去重的示例代码:
```javascript
let arr = [1, 2, 3, 3, 4, 4, 5];
let uniqueArr = [...new Map(arr.map(item => [item, item])).values(];
console.log(uniqueArr);  // [1, 2, 3, 4, 5]
```
解释:首先使用 `map` 方法将数组中的每个元素转换为 `[item, item]` 的形式,然后通过将此数组转换为 `Map` 对象,并使用扩展运算符 `...` 将 `Map` 对象转换为数组,最终得到去重后的数组。
5.使用递归方法
递归方法是一种比较消耗性能的去重方法,它会遍历数组的每个元素,并递归地在剩余元素中判断是否有重复项。下面是使用递归方法进行去重的示例代码:
```javascript
function unique(arr)
if (arr.length === 1)
return arr;
}
for (let i = 1; i < arr.length; i++)
if (arr[0] === arr[i])
arr.splice(i, 1);
i--;
}
}
return [arr[0]].concat(unique(arr.slice(1)));
let arr = [1, 2, 3, 3, 4, 4, 5];
let uniqueArr = unique(arr);
console.log(uniqueArr);  // [1, 2, 3, 4, 5]
```
解释:首先判断数组长度,如果只有一个元素则返回该数组。然后遍历数组,判断第一个元素与其余元素是否相等,如果相等,则使用 `splice` 方法将该元素从数组中删除。最后将第一个元素与递归处理后的剩余数组连接起来。
总结
本文介绍了五种常见的数组对象去重方法,并提供了相应的示例代码和解释。使用Set对象、filter方法、reduce方法、Map对象和递归方法都可以很好地去除数组中的重复项,具体选择哪种方法取决于实际需求和性能要求。在实际开发中,根据具体情况选择最合适的方法进行数组去重,能够提高开发效率和代码性能。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。