JavaScript实现字符串每个字符重复两次拼接(例Abcd转AAbbccdd)
问题原因
- 核心错误为循环内的
result赋值逻辑错误:每次循环都直接用当前字符重复两次的结果覆盖result的原有值,而非将当前处理结果追加到result尾部,最终只会返回最后一个字符重复两次的结果,输入Abcd时实际输出为dd。 - 次要问题:循环变量
i未使用let/const声明,会隐式创建全局变量,存在污染全局作用域的风险。
正确实现
方案1:基于原有逻辑修改
function doubleChar(str) { let output = str.split(""); let result = ""; // 声明局部循环变量,使用+=累加处理结果 for (let i = 0; i < str.length; i++) { result += output[i] + output[i] } return result } console.log(doubleChar("Abcd")); // 输出 AAbbccdd
方案2:简洁数组方法实现
function doubleChar(str) { // 拆分字符串为单字符数组,每个字符重复2次后再拼接为字符串 return str.split('').map(char => char.repeat(2)).join('') }
内容的提问来源于stack exchange,提问作者Jonathan Joseph
相关产品推荐
相关产品推荐

