首页 > 解决方案 > 递归数组问题

问题描述

这是一个初学者的问题。我是递归函数的新手,无法快速弄清楚为什么下面的代码有效,但是当尝试在一行中完成所有这些时,它在 React 中没有。

// Works:
generateDummyData(num, sentences) {
    sentences.push(randomSentence());
    return num === 1 ? sentences : this.generateDummyData(num-1, sentences);
}

// Doesn't Work:
generateDummyData(num, sentences) {
    return num === 1 ? sentences : this.generateDummyData(num-1, sentences.push(randomSentence()));
}

我想知道是否有更好的方法来做我想要完成的事情。

更新

一个不错的解决方法是创建一个新数组并将旧数据传播到新数组中。我不知道性能和内存是否会受到类似的影响,但它确实有效。

generateDummyData(num, sentences) {
    return num === 1 ? sentences : this.generateDummyData(num-1, [...sentences, randomSentence()]));
}

标签: javascriptreactjsrecursion

解决方案


sentences.push(randomSentence())不返回数组,而是返回数组的新长度。

push() 方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。

来源:MDN 推送文档

var test = ["a", "b", "c"];

console.log(test.push("d"));


推荐阅读