【问题标题】:Can someone explain how this for loop works?有人可以解释一下这个 for 循环是如何工作的吗?
【发布时间】:2020-09-21 00:15:57
【问题描述】:

此函数返回数组中的最大数。我需要帮助来理解 if 部分:if (arr[i] > maxNumber) {maxNumber = arr[i]}。使用伪代码或解释这究竟是如何工作的?

function max(arr){
    let maxNumber = 0
    for (i = 0; i < arr.length; i++) {
        if (arr[i] > maxNumber){
            maxNumber = arr[i]
        }
    }
    return maxNumber
}

console.log(max([1,2,3,40,5]));

【问题讨论】:

  • 为什么不直接使用Math.max(...arr)
  • @Lawrence:家庭作业。
  • 逐行检查代码。因此,您有一个值为 0 的变量 maxNumber,并且您正在循环 arr,首先arr[i] 的值为 1,因此它大于 maxNumber,因此您将 1 分配给 maxNumber 变量。在第二个循环中,您从 arr[i] 获得了 2 的值,然后再次检查它是否大于当前的 maxNumber 值(当时为 1)。所以继续这样,你返回 40 因为它是该数组中最大的 =)
  • 确实是家庭作业。谢谢哈利尔,精彩的解释。
  • 希望最大数量大于零。

标签: javascript for-loop if-statement


【解决方案1】:
function max(array) {
    largest number is equal to 0;
    for (i is equal to 0; i is less than the length of array; increment i by 1 each time) {
        if (the item at the current index is greater than the previous largest number) {
            set the largest number to to the item at the current index;
        }
    }
    return largest number which will be 0 if no larger number is found
}

值得注意的是,如果数组中的所有值都是负数,则返回0; 这也适用于负数。

function max(arr){
    let maxNumber = -Infinity
    for (i = 0; i < arr.length; i++) {
        if (arr[i] > maxNumber){
            maxNumber = arr[i]
        }
    }
    return maxNumber
}

【讨论】:

  • 我喜欢最后一条语句,如果没有找到更大的数字,最大的数字将是 0。 0 不在数组中,因此单元测试会失败。他们教的牛肚。
【解决方案2】:

这部分:if (arr[i] &gt; maxNumber) {maxNumber = arr[i]} 所做的是检查当前数组成员是否大于当前 maxNumber 以及是否将 maxNumber 值更改为当前数组。

简而言之,max(whatEverArray) 将始终返回零或数组的最大值。如果它返回零,则表示所有数组值都为零或小于零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多