js中字符串去重

字符串去重和数组去重有个很大的区别就是不能直接比较 所以宁做十个数组去重不愿做一个字符串去重 但是字符串去重吧还是经常用的 你还必须的掌握几种方法 下面给大家说几个比较方便的字符串去重

function norepeat(str) {
var newStr = “”;
for (var i = 0; i < str.length; i++) {
if (newStr.search(str[i]) == -1)
newStr += str[i];
}
return newStr;
}
var str = “a,a,ss,aa,f,g,e,r,t,y,y”;
var str = str.split(",")
//=============================================================
第二种方法感觉更好理解
var str=“a,a,b,c,c,d”;
var arr=str.split(",")
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr.splice(j,1);
j–//这里的j–可要可不要 这里采用的是数组中的选择排序 然后在去重弄
}
}
}

//============================================================
第三种方法感觉比较好理解局势借助于对象的属性来去重
当时做看这个的时候:只知道怎么去重 出现的次数 就蒙了网上也没查到

var arr = “aabccd”;
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (obj[arr[i]] == undefined) {
obj[arr[i]] = 1
} else {
obj[arr[i]]++;
}
}
//console.log(obj)
var str1 = “”;
for (var i in obj) {
str1 += i;
document.write(i + “:” + obj[i] + " ");

	}
### JavaScript 数组和字符串方法 #### 使用 `Set` 对数组进行 在 JavaScript 中,可以利用 `Set` 数据结构来实现数组的功能。由于 `Set` 只允许存储唯一的值,因此可以通过将其转换为数组的方式轻松完成操作[^2]。 ```javascript const array = [1, 2, 3, 1, 2, 3]; const uniqueArray = [...new Set(array)]; console.log(uniqueArray); // 输出: [1, 2, 3] ``` #### 使用 `indexOf()` 和 `lastIndexOf()` 进行数组 通过比较数组中某个元素首次出现的位置 (`indexOf`) 和最后出现的位置 (`lastIndexOf`) 是否相同,可判断是否存在复项并移除多余的副本[^4]。 ```javascript let arr = [1, 2, 3, 1, 2, 3, 1, 2, 3]; for (let i = 0; i <= arr.length - 1; i++) { let firstIndex = arr.indexOf(arr[i]); let lastIndex = arr.lastIndexOf(arr[i]); if (firstIndex === lastIndex) { continue; } else { arr.splice(lastIndex, 1); i--; } } document.write(arr); // 输出: [1, 2, 3] ``` #### 字符串中的复字符 对于字符串类型的输入数据,同样能够借助于 `Set` 来达到删除冗余的目的。具体做法是先将字符串拆分成单个字符组成的列表形式,再应用上述提到过的集合机制最终拼接回完整的字符串形态[^3]。 ```javascript const str = 'ababbc'; const uniqueStr = [...new Set(str)].join(''); console.log(uniqueStr); // 输出:"abc" ``` #### 性能考量与适用场景分析 每种方式都有其特定的应用场合及优劣之处,在实际开发过程中需依据具体情况选取最合适的解决方案。例如当面对大数据量时可能需要考虑算法的时间复杂度等因素影响程序运行效率等问题;而对于小型项目或者一次性脚本来说,则更倾向于简洁易懂易于维护性的代码风格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值