gpt4 book ai didi

javascript - 与arguments.length比较时潜在的无限循环

转载 作者:行者123 更新时间:2023-12-03 07:47:44 25 4
gpt4 key购买 nike

我正在尝试编写一个 for 循环,它遍历函数的所有输入,比较输入的元素,并输出唯一元素(在这种情况下,它们始终是数字)。

因为这是 freecodecamp exercise ,我收到一些反馈,并收到以下错误:错误:第 4 行潜在的无限循环。

如果我运行循环,没有无限循环保护,我就会耗尽内存。有人可以指出我做错了什么吗?

function unite(arr1, arr2, arr3) {
//for all arrays
var output = arr1;
for(var x = 0; x < arguments.length; x++) {
for(var y = 0; y < arguments[x].length; y++) {
for(var i = 0; i < output.length; i++) {
if(arguments[x][y] !== output[i]) {
output.push(arguments[x][y]);
}
}
}
}
return output;
}

unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);

最佳答案

我发现您的代码有两个问题。

1:您在迭代数组时向数组添加项目

您设置output = arr1', then start walking arr1 as part of参数. Then you are adding items into循环内的 arr1/output`。遍历这些附加项目并添加更多项目。

2:独特的测试有缺陷

如果您确保 output 中的项目,第一个问题可能不会那么糟糕。数组是唯一的。不幸的是,您在输出数组的唯一性测试中也存在问题。为输出数组中不匹配的每个条目添加当前项。如果你的输出是 [1,2,3,4]您要比较的项目是 2 ,它会被推送到输出 3 次,因为它与 1、3 或 4 不匹配。

关于javascript - 与arguments.length比较时潜在的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35132683/

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