我有以下功能:
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有什么问题?
答案 0 :(得分:1)
唯一可行的方法是将数组作为结果。
这是一个可能的解决方案:
function test(length) {
return [...Array(length).keys()]
.map(i => ({value: i + 1, label: i + 1}))
}
console.log(test(5));
&#13;
答案 1 :(得分:0)
如果你想在这里递归:
const test = (i, o) => (i ? test(i - 1, o) : []).concat(Object.assign({}, o, { value: i, label: i }));