javascript - Object.assign 递归不按预期工作

标签 javascript recursion functional-programming

我有以下功能:

const test = (i, o) => {
  if (i < 1)
    return o
  else
    return Object.assign(o, test(i - 1, ({
      value: i,
      label: i
    })))
}

console.log(test(5, ({})))

我除了打印:

[
    { value: '1', label: '1' },
    { value: '2', label: '2' },
    { value: '3', label: '3' },
    { value: '4', label: '4' },
    { value: '5', label: '5' }
]

但是结果是:

{ value: 1, label: 1 }

递归 Object.assign 有什么问题?

最佳答案

唯一有意义的方法是将数组作为结果。

这里有一个可能的解决方案:

function test(length) {
  return [...Array(length).keys()]
    .map(i => ({value: i + 1, label: i + 1}))
}

console.log(test(5));

关于javascript - Object.assign 递归不按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49213207/

相关文章:

javascript - 加载第三方脚本的正确方法?

recursion - 如何在Rust中将节点作为特征对象的树状结构制成?

ruby-on-rails - Rails 类型的 webapp 中的 'Model' 如何用函数式编程语言实现?

perl - 将 Perl 中的匿名 sub 写入文件以供以后使用

javascript - 使用 ejs 模板引擎时,我可以在 Node.js 的每个页面上包含 HTML 代码块(例如页脚和页眉)吗?

javascript - 如何检测 Firefox 中的 Enter 键?

javascript - 使用 jQuery 将对象转换为另一个对象

algorithm - 递归如何突破第一个递归快速排序调用?

c++ - 从堆栈中删除多余的变量 - C++

haskell - 理解代数数据类型的困难