数组去重和字符串去重的几种简单方法

一、数组去重

1 使用Set的特性:只能有唯一的元素

它类似于数组,但是成员的值都是唯一的、没有重复的,

初始化 Set 可以接受一个数组或类数组对象作为参数,也可以创建一个空的 Set

  1. 初始化传入要去重的数组,转换成Set类型,
  2. 再使用...三个点扩展运算符和用数组包起来重新组成新的数组或
    使用Array.from(),把类数组转换成数组
function _set(arr) {
  var _newSet = new Set(arr);
  console.log([..._newSet]); // 或Array.from(_newSet)
}

2 对象key唯一

把数组的值编程对象的key,匹配到就往对应的key中填入值再取出key组成数组

function _obj(arr) {
    var obj1 = {};
    for (let i = 0; i < arr.length; i++) {
        obj1[arr[i]] = 1;
    }
    console.log(obj1);
    var newArr = [];
    for(var index in obj1) {
        newArr.push(parseInt(index));
    }
    console.log(newArr);
}


3 使用indexOf()特性

默认从左开始找元素,返回第一个找到的下标,

把每个第一次找到的push到新的数组 完成去重

function _indexOf(arr) {
    var newArr = [];
    for (let i = 0; i < arr.length; i++) {
        if (arr.indexOf(arr[i]) == i) {
          newArr.push(arr[i]);
      }
    }
    console.log(newArr);
}

4 利用for循环嵌套

循环让每个元素和别的元素比较

找到了重复的使用splice删除重复元素

注意删除了一个元素后需要"--" 因为删除了元素


function _for_splice(arr) {
    for (let i = 0; i < arr.length; i++) {
        arr[i];
        for (let j = i+1; j < arr.length; j++) {
           if (arr[i] === arr[j]) {
               arr.splice(j,1);
               j--;/* 删除了一个元素同样的j要往回(重复项被删除,后面的补上了,下标不增加 也就是原地再执行一次) */
           }
        }
    }
    console.log(arr);
}

5利用sort()

sort( )方法,取出数组里面的元素,默认按照字符编码排序,先比较第一个字符

经过sort()排序后,数组中,重复项就会存在相邻的情况,只要比较所有相邻的是否相同就能完成整个数组去重

function _sort(arr) {
  arr = arr.sort();
  var newArr = [arr[0]]
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] !== arr[i - 1]) {
      newArr.push(arr[i]);
    }
  }
  return newArr
}

二、字符串去重

2.1 转数组split("") & join()去重再转回来

使用split("") =>转换成数组使用数组的方法去重后再用.join()方法转成字符串这样上方的数组去重方法都可以用(部分情况可用)


2.2 for循环遍历嵌套

var str = "feafuhaskdlhkafgrienf fdsafwekjl;d fdsajg";
//用flag状态是否有重复,重复就不添加进新字符串
_str_for(str)
function _str_for(str) {
    var flag = null;
    var newStr = "";
    var len = str.length;
    for (let i = 1; i < len; i++) {
        flag = 1
        for (let j = 0; j < newStr.length; j++) {
          if (newStr[j] === str[i]) {
             flag = 0
          }
        }
        if (flag) {
            newStr = newStr + str[i];
        }
    }
    console.log(newStr);
    return newStr;
}

2.3 indexOf匹配 search同理

function _indexOf(str) {
    var newStr = '';
    var len = str.length;
    for (let i = 0; i <len ; i++) {
        
        if (newStr.indexOf(str[i]) == -1) {
            newStr = newStr + str[i]
       }  
    }
    return newStr;
}

逆战班

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容