javascript - 递归数组问题
问题描述
这是一个初学者的问题。我是递归函数的新手,无法快速弄清楚为什么下面的代码有效,但是当尝试在一行中完成所有这些时,它在 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()]));
}
解决方案
sentences.push(randomSentence())
不返回数组,而是返回数组的新长度。
push() 方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。
var test = ["a", "b", "c"];
console.log(test.push("d"));
推荐阅读
- python - 如何向用户显示类别
- html - dompdf laravel if 1 div page break 2nd 从新页面开始如何防止?
- angular - Ionic - 使用 ion-toggle 切换功能
- python - Django计算人口金字塔的百分比
- spring-boot - How to convert plain java main method program on docker
- xml - 如何重新分发 MSXML 库?
- java - 为什么我在更换 Arial Narrow 时会得到额外的符号?
- ansible - 使用 Ansible 按第二个列表的特定顺序映射 Debian 软件包列表
- javascript - 我无法正确重新缩放
- rspec - 在 rspec 中获取安全的随机值