admin 管理员组

文章数量: 887629


2024年1月12日发(作者:java数组排序从小到大排序)

js数组去重的5种方法

在JavaScript中,有多种方法可以从数组中去重,本文将会介绍5种常用的方法。每种方法都有其适用的场景和特点,你可以根据实际情况选择合适的方法。

方法一:使用Set数据结构

Set是ES6中引入的新数据结构,它类似于数组,但是不允许出现重复的值。我们可以利用这个特性来去除数组中的重复元素。

```javascript

const arr = [1, 2, 3, 3, 4, 5, 5];

const uniqueArr = [...new Set(arr)];

(uniqueArr); // [1, 2, 3, 4, 5]

```

上述代码中,我们首先将数组转换为Set数据结构,然后再将Set转换为数组。通过这种方式,我们获得了一个去重后的数组。

方法二:使用数组的filter方法

数组的filter方法可以用于遍历数组,并返回满足指定条件的元素组成的新数组。我们可以使用filter方法来创建一个只包含不重复元素的数组。

```javascript

const arr = [1, 2, 3, 3, 4, 5, 5];

const uniqueArr = ((item, index, self) =>

return f(item) === index;

});

(uniqueArr); // [1, 2, 3, 4, 5]

```

在这个例子中,我们定义了一个回调函数,使用indexOf方法检查元素在数组中的索引是否和当前索引相同。如果相同,说明该元素是第一次出现,我们就将其作为过滤条件返回。

方法三:使用for循环和includes方法

我们也可以使用for循环和includes方法来遍历数组,并检查元素是否已经存在于新数组中。如果不存在,我们就将其添加进去。

```javascript

const arr = [1, 2, 3, 3, 4, 5, 5];

const uniqueArr = [];

for (let i = 0; i < ; i++)

if (!es(arr[i]))

(arr[i]);

}

(uniqueArr); // [1, 2, 3, 4, 5]

```

这个方法比较直观和易懂,但是在大数组中性能可能会较差,因为includes方法需要遍历整个新数组来检查元素是否已存在。

方法四:使用reduce方法

reduce方法可以将数组通过指定的回调函数计算为一个值。我们可以利用reduce方法来创建一个新数组,并在遍历过程中检查元素是否已经存在。

```javascript

const arr = [1, 2, 3, 3, 4, 5, 5];

const uniqueArr = ((acc, cur) =>

if (!es(cur))

(cur);

}

return acc;

},[]);

(uniqueArr); // [1, 2, 3, 4, 5]

```

在这个例子中,我们使用reduce方法初始化一个空数组作为累加器,并通过判断元素是否已存在来更新累加器。最终,我们得到一个去重后的新数组。

方法五:使用对象属性

这种方法是一种巧妙的利用了对象属性的特性来去重的方法。我们可以将数组元素作为对象的属性来存储,并通过判断属性是否存在来去重。

```javascript

const arr = [1, 2, 3, 3, 4, 5, 5];

const uniqueArr = (((acc, cur) =>

acc[cur] = true;

return acc;

},{}));

(uniqueArr); // ["1", "2", "3", "4", "5"]

```

在这个例子中,我们使用reduce方法将数组元素作为对象的属性存储,并将属性值设为true。最终,我们通过方法获取对象的所有属性,即得到了去重后的数组。

总结:

以上是五种常用的去重方法,每种方法都有自己的优缺点,你可以根据实际情况选择合适的方法。如果你使用的是ES6及以上的环境,推荐使用Set数据结构来进行去重,它具有更好的性能和更简洁的代码。


本文标签: 数组 方法 元素 使用 属性