经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
js数组去重常见的方法汇总(7种)
来源:jb51  时间:2022/9/1 5:03:11  对本文有异议

1、借助ES6提供的Set结构 new Set() 简单好用 强烈推荐

直接给一个新的数组里面,利用es6的延展运算符

  1. var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
  2. console.log(arr);
  3. function noRepeat(arr){
  4. var newArr = [...new Set(arr)]; //利用了Set结构不能接收重复数据的特点
  5. return newArr
  6. }
  7. var arr2 = noRepeat(arr)
  8. console.log(arr2);

2、利用 filter() 去重

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。item是当前元素的值,index是当前元素的索引值。indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。利用indexOf() 查询到数组的下标,看是否等于当前的下标,相等的话就返回,否则不返回值。

  1. var arr = ['apple','apps','pear','apple','orange','apps'];
  2. console.log(arr)
  3. var newArr = arr.filter(function(item,index){
  4. return arr.indexOf(item) === index; // 因为indexOf 只能查找到第一个
  5. });
  6. console.log(newArr);

3、利用for 循环 搭配 indexOf 去重

  1. var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
  2. function noRepeat(arr) {
  3. //定义一个新的临时数组
  4. var newArr=[];
  5. //遍历当前数组
  6. for(var i=0;i<arr.length;i++) {
  7. //如果当前数组的第i已经保存进了临时数组,那么跳过,
  8. //否则把当前项push到临时数组里面
  9. if(newArr.indexOf(arr[i]) === -1) { //indexOf() 判断数组中有没有字符串值,如果没有则返回 -1
  10. newArr.push(arr[i]);
  11. }
  12. }
  13. return newArr
  14. }
  15. var arr2 = noRepeat(arr);
  16. console.log(arr2);

4、将数组的每一个元素依次与其他元素做比较,发现重复元素,删除 比较繁琐 不推荐

  1. var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
  2. console.log(arr);
  3. function noRepeat(arr) {
  4. for(var i = 0; i < arr.length-1; i++){
  5. for(var j = i+1; j < arr.length; j++){
  6. if(arr[i]===arr[j]){
  7. arr.splice(j,1);
  8. j--;
  9. }
  10. }
  11. }
  12. return arr;
  13. }
  14. var arr2 = noRepeat(arr);
  15. console.log(arr2);

5、借助新数组 通过 indexOf 方法判断当前元素在数组中的索引,如果与循环的下标相等则添加到新数组中

  1. var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
  2. console.log(arr)
  3. function noRepeat(arr) {
  4. var newArr = [];
  5. for (var i = 0; i < arr.length; i++) {
  6. if (arr.indexOf(arr[i]) == i) {
  7. newArr.push(arr[i]);
  8. }
  9. }
  10. return newArr;
  11. }
  12. var arr2 = noRepeat(arr);
  13. console.log(arr2);

6、利用双重for循环

  1. var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
  2. console.log(arr);
  3. function noRepeat(arr){
  4. for (var i = 0; i < arr.length; i++) {
  5. for (var j = 0; j < arr.length; j++) {
  6. if (arr[i] == arr[j] && i != j) { //将后面重复的数删掉
  7. arr.splice(j, 1);
  8. }
  9. }
  10. }
  11. return arr;
  12. }
  13. var arr2 = noRepeat(arr);
  14. console.log(arr2);

7、利用includes实现数组去重

  1. var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
  2. function noRepeat(arr) {
  3. let newArr = [];
  4. for(i=0; i<arr.length; i++){
  5. if(!newArr.includes(arr[i])){
  6. newArr.push(arr[i])
  7. }
  8. }
  9. return newArr
  10. }
  11. console.log(noRepeat(arr));

以上就是比较常用的七种方法了

总结

到此这篇关于js数组去重常见7种方法的文章就介绍到这了,更多相关js数组去重方法内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号