JavaScript之数组/字符串去重

    一个数组之中的值如果有重复的,怎么把这个数组变的没有重复值,这就需要用到我们已经学过的知识,运用算法来实现。

数组去重在原型链上编程,也就是在Array.prototype上面写代码。

Array.prototype.unique = function (){
var temp = {},len = this.length,arr = [];
for(var i = 0; i < len; i ++){
if(!temp[this[i]]){
temp[this[i]] = "a";
arr.push(this[i]);
}
}
return arr;
}
var arr = [1,2,3,4,5,1,2,3,4];
console.log(arr.unique());
//[1,2,3,4,5]

字符串去重,字符串去重和数组去重数据结构是一样的。

String.prototype.unique = function(){
var temp = {},len = this.length,s = "";
for(var i = 0; i < len; i ++){
if(!temp[this[i]]){
temp[this[i]] = "1";
s += this[i];
}
}
return s;
}
var str = "abcabcqweqwe";
console.log(str.unique());
//"abcqwe"
        

  JavaScript语言我个人感觉是最有意思的了,我也是一个初学者,遇到问题,喜欢在博客上分享,

也希望能帮到大家。一个初学者,有什么不足或者纰漏的话,希望在下面评论出来,相互学习,共同进步。

--主页传送门--
### 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、付费专栏及课程。

余额充值