JavaScript字符串去重

整理了以下6种JS字符串去重方法,仅供参考。

  1. 利用indexOf
function unique(str) {
    let newStr = "";
    for (let i = 0; i < str.length; i++) {
        if (newStr.indexOf(str[i]) === -1) {
            newStr += str[i];
        }
    }
    return newStr;
}
  1. 利用ES6的Set方法
function unique(str) {
    let arr = str.split("");
    let newArr = [...new Set(arr)];
    return newArr.join("");
}
  1. 利用数组的includes方法
function unique(str) {
    let arr = str.split("");
    let newArr = [];
    for (let i = 0; i < arr.length; i++) {
        if (!newArr.includes(arr[i])) {
            newArr.push(arr[i]);
        }
    }
    return newArr.join("");
}
  1. 利用字符串的search方法
function unique(str) {
    let newStr = "";
    for (let i = 0; i < str.length; i++) {
        if (newStr.search(str[i]) === -1) {
            newStr += str[i];
        }
    }
    return newStr;
}
  1. 使用双for循环
function unique(str) {
    var newStr = "";
    var flag;
    for (var i = 0; i < str.length; i++) {
        flag = 1;
        for (var j = 0; j < newStr.length; j++) {
            if (str[i] == newStr[j]) {
                flag = 0;
                break;
            }
        }
        if (flag) newStr += str[i];
    }
    return newStr;
}

该方法可能有部分人不太能理解。其实就是第一步定义一个新字符串和一个flag标识。第二步对需要去重的字符串进行遍历,并在内部将标识设为1,且对新字符串也进行遍历,每次遍历需要去重的字符串时,都让它与新字符串中的字符进行对比;如果都不相等,则标识还是为1,此时便将该次遍历的值添加到新字符串中;如果有一个相等,则将标识设为0,并跳出循环,并且因为flag为0,所以后面的添加操作也不会进行。直接进入下一次遍历。

  1. 利用对象的属性不能相同的特点去重
function unique(str) {
    let newStr = "";
    let obj = {};
    for (let i = 0; i < str.length; i++) {
        if (!obj[str[i]]) {
            newStr += str[i];
            obj[str[i]] = 1;
        }
    }
    return newStr;
}

以上就是整理出的6种JS字符串去重方法,若有错误,请指出!也请大佬们可以分享分享其他方法,谢谢!


版权声明:本文为Maserati_8000原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。