如何移除数组中的重复字符串?现有JavaScript代码无法正常运行
数组去重代码问题排查与修复
原代码的核心问题
- 循环内的判断
input[i] == input[i]永远为真,第一次循环就触发return false,直接终止函数,后续逻辑完全没机会执行 return语句放在循环内部,导致函数无法遍历完整数组result.push(input[i])写在循环外部,此时i已经超出数组下标范围,即使执行也只会添加undefined- 整体逻辑错误:判断重复的逻辑应该是检查当前元素是否已存在于结果数组,而非和自身比较
修复后的实现(基础循环版)
var input = ['john','john','rio','ravi','josva','ravi']; let removeDuplicates = function(){ let result = []; for (let i = 0; i < input.length; i++){ // 检查当前元素是否不在结果数组中 if(!result.includes(input[i])){ result.push(input[i]); } } console.log(result); // 输出: ['john', 'rio', 'ravi', 'josva'] }; removeDuplicates();
更简洁的实现(利用Set特性)
Set会自动去重,结合扩展运算符可以快速完成去重:
var input = ['john','john','rio','ravi','josva','ravi']; let removeDuplicates = function(){ let result = [...new Set(input)]; console.log(result); // 输出: ['john', 'rio', 'ravi', 'josva'] }; removeDuplicates();
内容的提问来源于stack exchange,提问作者Johnson Rosario
相关产品推荐
相关产品推荐

