这是递归函数的一个新问题,无法快速找出以下代码为什么起作用,但是当试图在一行中完成所有这些操作时,在React JS中却没有?

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

Doesnt 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()]));
}

最佳答案

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


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


Source: MDN push doc



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

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

10-06 02:29