【问题标题】:For loop in JavaScript I want some knowledge about the program that is given below [closed]JavaScript中的for循环我想要一些关于下面给出的程序的知识[关闭]
【发布时间】:2021-05-08 19:34:00
【问题描述】:

function multiplyAll(arr) {
  var product = 1;

  for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr[i].length; j++) {
      product * arr[i][j];
    }
  }

  return product;
}

const result = multiplyAll([[1,2],[3,4],[5,6,7]]);

console.log(result);

第一季度。什么是arr[i]
Q2。我刚刚看到了像var multiplyAll = [[1,2],[3,4],[5,6,7]] 这样制作的数组,所以我没有理解上面指定的代码中制作的数组的意义吗?

如果有人能帮助我理解这段代码,那么我们将不胜感激,因为我不想在没有弄清楚基础知识的情况下进入下一个问题。

【问题讨论】:

    标签: javascript arrays loops for-loop


    【解决方案1】:

    你的函数是用一个矩阵调用的,即一个二维数组。在 JavaScript 中,这表示为数组数组。外部数组每有一个条目,每一行本身就是一个值数组。

    第一季度。 arr[i] 是什么?

    它是矩阵中的一行:索引为i 的那一行。它是一个数组,这就是为什么您可以为 that 数组指定另一个索引,例如 arr[i][j] 这意味着:获取索引 i 处的行并从该数组中获取索引处的值 @987654324 @。

    第二季度。我刚刚看到像var multiplyAll = [[1,2],[3,4],[5,6,7]] 这样制作的数组,所以我没有理解上面代码中制作的数组的意义。

    即时创建一个二维数组。虽然您可以使用这样的 literal 通过赋值运算符(您似乎理解)来初始化变量,但您也可以将其作为函数调用的参数提供。然后相应的参数变量arr 将接收它作为其初始化值。所以在某种程度上它也是一个赋值,只是不是=操作符。

    【讨论】:

    • 关于点解释先生。谢谢
    • 我看到你删除了接受标记。有问题吗?
    【解决方案2】:

    这个函数所做的几乎就是它接收一个二维数组(所以这是一个数组数组)。这意味着arr[i] 本身就是一个数组;外部数组中的第一个数组。

    二维数组的概念非常有用,例如对于网格或板。尽管乍一看它们看起来很奇怪,但一旦您了解它们,它们并不算太糟糕。它有助于不将它们限制在 1 行中:

    var multiplyAll = [
      [1,2],
      [3,4],
      [5,6,7]
    ]
    

    【讨论】:

      【解决方案3】:

      Q2:multiplyAll([[1,2],[3,4],[5,6,7]]); 中的数组被创建为函数参数,而不是分配给变量。当您使用var array = [1, 2, 3] [1, 2, 3] 部分创建数组时,var array = 部分仅用于将数组分配给变量。当函数 multiplyAll 被调用时,数组 [[1,2],[3,4],[5,6,7]] 作为第一个参数传入,因此在函数内部它被分配给 arr

      Q1:arr[i] 用于引用 arr 中的第 i 个元素。例如,如果我有var arr = [3, 5, 4] 并且我使用了arr[0],它将引用arr3 中的第0 个(第一个)元素

      【讨论】:

      • 非常感谢您抽出宝贵的时间,但我仍然对程序有一些疑问,我仍然不清楚在函数中传递参数,如上面的函数 (arr) 这个参数在做什么.谢谢你
      【解决方案4】:
      1. arr[i] 是数组中的一个数组 i 是索引
      2. 这个函数没有做任何事情,因为这条线product * arr[i][j];它没有改变数组,只是“在空中”将它乘以1-没有将它保存到变量中 然后函数只返回始终为 1 的产品,这就是为什么这个函数是错误的,它只返回 1

      【讨论】:

        【解决方案5】:

        一个函数,接受某种输入,做某事,或返回某事(这意味着该函数输出某些内容,您可以将该函数用作表达式的一部分)。这个函数返回变量product

        输入是arr(名称无关紧要),它应该是一个数组。数组类似于列表。例如[1, 2, 3] 是一个数字列表。并且您可以通过说arr[0] 来获取该数组的特定索引,因为数组从 0 开始,arr[0] 是值 1。

        你可以有一个字符串数组["hello", "world"] 和所有东西,所以没有理由你不能在这个数组中有一个数组数组,例如[[1, 2], [3,4]]arr[0] 是第一个值,它是 [ 1,2],它本身是一个数组,这意味着您可以通过说arr[0][0] 来访问那里的第一个值。

        好的,具体来说功能:

        一个名为product 的变量被声明为1。这是一个数字。

        并且有一个循环基本上说“创建一个名为i的变量并将其设置为零。继续循环并将变量i加1直到它i不再小于数组的长度。”这意味着第一个循环循环的次数与外部数组的长度一样多。

        每次变量 i 增加。而不是数字arr[0],您可以在括号中放置一个变量,所以它是arr[i]。记住arr 是一个数组数组,所以arr[i] 是另一个数组。

        这应该回答问题 1

        在这个循环内部,还有另一个循环,它循环通过“内部”数组。这样做的逻辑是相同的,只是使用了一个名为j 的变量。这两个循环意味着对于外部 for 循环的每个循环,内部 for 循环都会遍历所有“内部”数组。

        在 2 个 for 循环中,您现在可以访问 ij。这会遍历所有可能的值。所以如果你要 console.log(i,j),它会打印出这样的东西

        0 0

        0 1

        1 0

        1 1

        2 0

        2 1

        2 3

        如果你现在做arr[i][j],当所有的循环都完成时,它应该遍历所有的值。它将乘积乘以该值。 (我认为应该是product *= arr[i][j])。最后,它将返回所有相乘的值

        我想我可能重复了很多你已经知道的事情,但我认为这可以解释一切。

        【讨论】:

          猜你喜欢
          • 2022-12-15
          • 2015-08-01
          • 1970-01-01
          • 2017-02-19
          • 2016-08-26
          • 1970-01-01
          • 2019-02-10
          • 2017-06-25
          相关资源
          最近更新 更多