gpt4 book ai didi

Javascript递归循环项目到数组

转载 作者:行者123 更新时间:2023-12-02 07:33:28 25 4
gpt4 key购买 nike

我正在尝试制作一个小程序,提示用户将商品添加到购物 list 。

我阅读了有关使用递归循环的信息。我知道 while 循环可能更适合这项任务,但我在 while 循环中遇到了同样的问题,我想尝试递归。听起来我知道自己在做什么......“是的,我使用递归来枚举数组,同时提示用户进行验证......呵呵呵呵”......但是,我离题了。

代码如下:

function addToArray() {
var array = [];
array.push(prompt("Add items to array or 'q' to stop"));
if (array.pop() == 'q') {
document.write(array)
}
else {
addToArray();
}
}
addToArray();

如果您注意到,它会像预期的那样循环,但不会将项目添加到数组中。我也尝试了 array[i] = i 技术,但无济于事,数组仍然为空。另外,为什么通过使用没有参数的函数我不会遇到太多递归?是因为条件语句的原因吗?

如果你知道我做错了什么,试着暗示正确的答案,而不是脱口而出。我想要那个“啊哈”的时刻。我认为这一切都有助于我们更好地学习。

谢谢各位。 (和女孩)

最佳答案

您正在创建一个新数组,而不是将其传递给递归调用。

改为这样做。

演示: http://jsfiddle.net/kDtZn/

function addToArray(array) {
array.push(prompt("Add items to array or 'q' to stop"));
if (array[array.length-1] == 'q') {
array.pop();
document.write(array)
}
else {
addToArray(array);
}
}
addToArray([]);

现在你从一个空数组开始,对于每个递归调用,它都向前传递同一个数组。

另外,我对其进行了更改,使其不在 if() 条件中使用 .pop() ,否则您将始终以空结束到时候写数组。 (.pop() 方法实际上删除了最后一项。)

最后,确保在加载 DOM 后没有使用 document.write。如果是这样,您需要将其更改为使用 DOM 操作方法。


您可以采用不同的方法,这样您就根本不需要 .pop()

演示: http://jsfiddle.net/kDtZn/1/

function addToArray(array) {
var item = prompt("Add items to array or 'q' to stop");
if (item == 'q') {
document.body.textContent = array;
} else {
array.push(item);
addToArray(array);
}
}
addToArray([]);

您的 while 循环不起作用的原因很可能是由于原始 .pop() 问题。

关于Javascript递归循环项目到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19394051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com