admin 管理员组文章数量: 887629
2024年1月12日发(作者:正则表达式任意长度字符串)
JS数组去掉重复数据只保留一条的实现代码
JavaScript数组去重的方法有很多种,下面给出一些常见的实现代码。每种方法的实现原理和优缺点都会进行解释。
方法一:使用Set
```javascript
function uniqueArray(array)
return (new Set(array));
```
使用Set可以去除数组中的重复项,因为Set是一种特殊的数据结构,它只允许存储不重复的值。该方法首先将数组转换为Set,然后再将Set转换为数组,从而得到去重后的数组。该方法的优点是简单易用,但不保证数组的顺序。
方法二:使用filter
```javascript
function uniqueArray(array)
return ((item, index, self) =>
return f(item) === index;
});
```
该方法使用filter函数对数组进行遍历,在遍历过程中使用indexOf函数判断当前元素在数组中的索引是否与它第一次出现的位置一致,如果一致,则保留该元素,否则过滤掉。该方法的优点是保留数组的顺序,但在大数据量的情况下可能会造成性能问题。
方法三:使用reduce
```javascript
function uniqueArray(array)
return ((result, item) =>
if (!es(item))
(item);
}
return result;
},[]);
```
该方法使用reduce函数对数组进行迭代,将结果保存在一个新的数组中。在迭代过程中,使用includes函数判断结果数组中是否已经包含了当前元素,如果不包含,则将该元素添加到结果数组中。该方法的优点是保留数组的顺序,并且在大数据量的情况下性能较好。
方法四:使用对象属性
```javascript
function uniqueArray(array)
const obj = {};
return ((item) =>
return Property(item) ? false : (obj[item] = true);
});
```
该方法首先定义一个空对象,然后使用filter函数遍历数组,对每个元素进行判断。判断的依据是当前元素是否存在于对象的属性中,如果存在则过滤掉,如果不存在,则将该元素添加到对象的属性中,并返回true。该方法的优点是保留数组的顺序,并且在大数据量的情况下性能较好,但需要消耗额外的内存空间。
方法五:使用Map
```javascript
function uniqueArray(array)
const map = new Map(;
return ((item) =>
return !(item) && (item, true);
});
```
该方法使用Map数据结构来实现去重,首先创建一个空的Map对象,然后使用filter函数遍历数组。判断的依据是当前元素是否存在于Map中,如果不存在,则将该元素作为Map的key插入,并返回true。该方法的优点是保留数组的顺序,并且在大数据量的情况下性能较好,但需要消耗额外的内存空间。
方法六:使用for循环嵌套比较
```javascript
function uniqueArray(array)
const result = [];
const len = ;
for (let i = 0; i < len; i++)
let isDuplicate = false;
for (let j = i + 1; j < len; j++)
if (array[i] === array[j])
isDuplicate = true;
break;
}
}
if (!isDuplicate)
(array[i]);
}
}
return result;
```
该方法使用两层for循环进行比较,外层循环遍历数组的每个元素,内层循环从当前元素的下一个位置开始遍历,判断是否与外层循环的元素相等,如果相等则将isDuplicate置为true,并结束内层循环。如果内层循环结束后isDuplicate为false,则将当前元素添加到结果数组中。该方法的优点是不消耗额外的内存空间,但在大数据量的情况下性能较差。
方法七:使用递归
```javascript
function uniqueArray(array)
if ( === 1)
return array;
} else
const first = array[0];
const rest = uniqueArray((1));
return es(first) ? rest : [first, ...rest];
}
```
该方法使用递归的方式进行去重,首先判断数组的长度是否为1,如果是,则直接返回该数组。否则,将数组分割成第一个元素和剩余部分两个数组,并通过递归对剩余部分进行去重。然后判断剩余部分是否包含第一个元素,如果包含,则返回剩余部分,否则将第一个元素与剩余部分连接起来。该方法的优点是保留数组的顺序,并且使用递归算法能够应对任意长度的数组,但在大数据量的情况下性能较差。
除了上述的方法之外,还可以使用一些第三方库来实现数组去重,例如lodash和underscore等。这些库提供了更多的数组处理功能,可以进一步简化去重的操作。
总结:本文介绍了JavaScript中常见的数组去重方法,包括使用Set、filter、reduce、对象属性、Map、for循环嵌套和递归等方法。每种方法的实现原理和优缺点都有所介绍,可以根据实际需求选择适合的方法进行实现。
版权声明:本文标题:JS数组去掉重复数据只保留一条的实现代码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705003443h469319.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论