用ES6写一个数组去重
时间: 2023-12-29 16:48:06 浏览: 164
我们可以使用ES6中的Set对象来进行数组去重,这是Set对象的一个特性,它只会保存不重复的值。
```javascript
const arr = [1, 2, 3, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
上面的代码中,我们先创建了一个数组`arr`,其中包含了重复的元素。然后,我们使用`new Set(arr)`创建了一个Set对象,这个对象只包含不重复的元素。最后,我们使用展开运算符`[... ]`将Set对象转换为数组,得到了去重后的数组`uniqueArr`。
也可以使用Array.from()方法来将Set对象转换为数组:
```javascript
const arr = [1, 2, 3, 3, 4, 4, 5];
const uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
相关问题
用es6写一个对象数组的去重
您可以使用ES6的Set数据结构来实现对象数组的去重。Set是一种集合数据结构,它只会存储唯一的值。以下是使用ES6的Set和数组的一些方法来实现对象数组的去重:
```javascript
const arr = [
{ id: 1, name: 'Apple' },
{ id: 2, name: 'Banana' },
{ id: 1, name: 'Apple' },
{ id: 3, name: 'Orange' },
{ id: 2, name: 'Banana' }
];
const uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);
console.log(uniqueArr);
```
这里的步骤是:
1. 使用`map`方法将对象转换为字符串形式,以便在Set中进行比较。
2. 创建一个新的Set,用于存储唯一的字符串表示。
3. 使用`Array.from`将Set转换回数组。
4. 使用`map`方法将字符串转换回对象形式。
这样,`uniqueArr`数组将只包含唯一的对象。
希望这个示例对您有所帮助!如果您有任何其他问题,请随时提问。
写一个数组去重的demo
以下是一个基于ES6的数组去重的示例代码:
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = [...new Set(arr)]; //使用Set去重,再转为数组
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
另外,也可以使用循环遍历的方式进行去重:
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = [];
for(let i = 0; i < arr.length; i++) {
if(uniqueArr.indexOf(arr[i]) === -1) { //如果该元素没有出现过
uniqueArr.push(arr[i]); //则将其加入结果数组中
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
但是,这种方式的时间复杂度较高,不如使用Set去重。
阅读全文