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

请求协助:用回调与高阶函数实现字符串数组复数化(遵循DRY原则)

代码修正与优化方案

原代码存在的问题

  • 函数pluralize中错误使用了未定义的变量animals,实际应使用传入的参数array
  • 手动编写循环遍历数组,未利用JavaScript数组内置方法,不够简洁,未充分遵循DRY(Don't Repeat Yourself)原则

修正后的代码

方案一:修复变量名问题,保留回调函数模式

function pluralize(array, callback) {
  let output = []
  
  for (let i = 0; i < array.length; i++) {
    let pluralized = callback(array[i])
    output.push(pluralized)
  }
  return output
}

function addS(str) {
  return str + 's'
}

// 使用示例
const animals = ['cat', 'dog', 'bird']
console.log(pluralize(animals, addS)) // 输出: ["cats", "dogs", "birds"]

方案二:利用数组map方法简化,更贴合DRY原则

数组的map方法本身就是用于遍历数组并返回新数组的工具,无需手动编写循环逻辑,避免重复造轮子:

function pluralize(array) {
  return array.map(str => str + 's')
}

// 使用示例
const animals = ['cat', 'dog', 'bird']
console.log(pluralize(animals)) // 输出: ["cats", "dogs", "birds"]

如果需要保留回调函数的扩展性(比如后续支持其他复数规则),也可以结合map实现:

function pluralize(array, callback) {
  return array.map(callback)
}

function addS(str) {
  return str + 's'
}

// 使用示例
const animals = ['cat', 'dog', 'bird']
console.log(pluralize(animals, addS)) // 输出: ["cats", "dogs", "birds"]

内容的提问来源于stack exchange,提问作者J Christian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:40:41