You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

完善logger函数:实现对字符串每个字符调用传入函数并返回结果

修复后的 logger 函数

首先,原代码存在几个关键问题:

  • newStr 被初始化为字符串,但使用了数组的 push() 方法,这会直接引发报错
  • 循环内部直接 return newStr,仅执行一次迭代就返回结果,无法处理字符串中的所有字符
  • 变量 i 未用 let/const 声明,会成为全局变量,引发潜在的作用域问题
  • 调用 func 时未传入当前遍历的字符,无法实现对每个字符的针对性处理

以下是几种修复方案:

方案1:返回处理后的结果数组

如果需要保留每个字符调用 func 后的独立结果(比如 func 返回数字或其他非字符串类型),可以返回数组:

function logger(func, str) {
  const results = [];
  for (let i = 0; i < str.length; i++) {
    results.push(func(str[i]));
  }
  return results;
}

方案2:返回拼接后的字符串

如果 func 对每个字符处理后返回字符串,需要将结果拼接成最终字符串:

function logger(func, str) {
  let newStr = '';
  for (let i = 0; i < str.length; i++) {
    newStr += func(str[i]);
  }
  return newStr;
}

方案3:使用数组方法简化代码

利用 split() 将字符串转为字符数组,再用 map() 遍历处理,代码更简洁:

// 返回结果数组
function logger(func, str) {
  return str.split('').map(func);
}

// 若需返回拼接后的字符串,追加 join('')
function logger(func, str) {
  return str.split('').map(func).join('');
}

内容的提问来源于stack exchange,提问作者Alex Starr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:10:30