Javascript 递归数组问题
对于递归函数来说,这是一个很难回答的问题,不能很快解决为什么下面的代码可以工作,但是当试图在一行中完成所有这些时,js中没有反应Javascript 递归数组问题,javascript,reactjs,recursion,Javascript,Reactjs,Recursion,对于递归函数来说,这是一个很难回答的问题,不能很快解决为什么下面的代码可以工作,但是当试图在一行中完成所有这些时,js中没有反应 Works: generateDummyData(num, sentences) { sentences.push(randomSentence()); return num === 1 ? sentences : this.generateDummyData(num-1, sentences); } Doesnt Work: generateDum
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()));
}
任何帮助解释或说明一个更好的方式来做我的尝试将不胜感激。期待您的评论
更新:
一个很好的解决方法是创建一个新的数组,并将旧数据传播到新数组中。不知道性能和内存是否会受到这样的影响,但它确实有效
生成mmydatanum、句子{
return num==1?句子:this.generateDummyDatanum-1,[…句子,随机句子];
}
句子。PushRandom句子不返回数组,但返回数组的新长度
push方法将一个或多个元素添加到数组的末尾,然后
返回数组的新长度
var检验=[a、b、c];
console.logtest.pushd 句子。PushRandom句子不返回数组,但返回数组的新长度
push方法将一个或多个元素添加到数组的末尾,然后
返回数组的新长度
var检验=[a、b、c];
console.logtest.pushd 在第二个示例中,您正在传递push的结果。而不是数组本身。像这样的方法应该会奏效:
return num === 1 ?
sentences :
this.generateDummyData(
num - 1, sentences.push(randomSentence()) && sentences
);
在第二个示例中,您正在传递push的结果。而不是数组本身。像这样的方法应该会奏效:
return num === 1 ?
sentences :
this.generateDummyData(
num - 1, sentences.push(randomSentence()) && sentences
);
根据报告,它返回
方法所基于的对象的新长度属性
打电话来
因此,在您的示例中,您不是将序列传递给下一个方法调用,而是传递序列长度
这就是这两个方法不相等的原因。根据,它返回
方法所基于的对象的新长度属性
打电话来
因此,在您的示例中,您不是将序列传递给下一个方法调用,而是传递序列长度
这就是这两个方法不相等的原因。Push在向数组中添加元素后返回数组的大小,因此当您在向函数传递数据时使用它时,它会在推送值后传递返回值,而不是数组值。你应该改用concat
generateDummyData(num, sentences) {
return num === 1 ? sentences : this.generateDummyData(num-1, sentences.concat([randomSentence()]));
}
Push在向数组中添加元素后返回数组的大小,因此当您在向函数传递数据时使用它时,它会在推送值后传递返回值,而不是数组值。你应该改用concat
generateDummyData(num, sentences) {
return num === 1 ? sentences : this.generateDummyData(num-1, sentences.concat([randomSentence()]));
}
更新了解决方案更新了解决方案