繁体   English   中英

function 中的 for 循环在另一个函数的 for 循环 javascript 中被调用

[英]for loop inside a function being called in another function's for loop javascript

我正在尝试使用 javascript 实现选择排序,但似乎要么我遗漏了什么,要么做了一些绝对错误的事情。
乍一看,您可能会理解, sortArray()似乎只返回一个值5arr ,而它应该返回一个带有[5,5,5,5,5,5]的数组。
值得一提的是,当我评论 line smallest_index = find_smallest(nums)
我得到了假设的输入; [5,5,5,5,5,5]

 let nums = [2, 1, 3, 4, 5, 6]; function sortArray(nums) { let arr = new Array(); let smallest_index; for (i = 0; i < nums.length; i++) { smallest_index = find_smallest(nums); arr.push("5"); } return arr; } function find_smallest(arr) { let smallest = arr[0]; let smallest_index = 0; for (i = 1; i < arr.length; i++) { if (arr[i] < smallest) { console.log("this"); smallest = arr[i]; smallest_index = i; } } return smallest_index; } console.log(sortArray(nums));

关于我可能没有意识到或没有做的任何帮助或想法?

问题出在你的 for 循环中。 更具体地说,您需要在使用变量 i 之前声明它。 如果您像下面的代码片段一样更改代码,那么您的代码将按预期工作:

 let nums = [2, 1, 3, 4, 5, 6]; function sortArray(nums) { let arr = new Array(); let smallest_index; for (let i = 0; i < nums.length; i++) { smallest_index = find_smallest(nums); arr.push("5"); } return arr; } function find_smallest(arr) { let smallest = arr[0]; let smallest_index = 0; for (let i = 1; i < arr.length; i++) { if (arr[i] < smallest) { console.log("this"); smallest = arr[i]; smallest_index = i; } } return smallest_index; } console.log(sortArray(nums));

唯一的区别是使用

for (let i = 1; ...

代替

for (i = 1; ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM