从业务场景角度谈数组去重

1,440 阅读1分钟

导读

在前端开发中,经常要遇到去除数组中重复数据的问题,即所谓的数组去重。社区中有很多解决的办法,比如双层for循环、indexOf + filterSet等,有的还会考虑{},[]NaN是否重复,以及几千万条数据去重而导致的性能问题,但以实际业务开发场景来看,我们遇到的大多数情况是如何去除同一类型、数据量不大的重复数据,所以本文从业务场景角度出发,只列举出几种常用、简单的数组去重办法,如果你有更好的思路,欢迎留言区拍板。

数组去重(同一基本类型)

1. 使用Set和Array.from

set

2. 使用Array.filter和Array.indexOf

3. 使用Array.reduce和Array.includes

数组对象去重

顾名思义,数组里面的项不再是基本类型,在实际业务开发场景中,我们需要根据对象指定的属性去除重复的项。

1. 利用对象的键不可重复

2. 利用Map的键不可重复

数组添加不可重复的项

下图是QQ音乐的搜索历史列表,每当用户输入一个新的关键词,便会把它添加到历史列表的首位,如果出现了重复,需要删除掉旧的那一项。实际上这里也是数组对象去重的问题,解决思路很简单,直接过滤掉旧的重复项,把新的一项添加到首位即可。