【问题标题】:How to I run a function for each piece of an array within a for loop in Javascript?如何在Javascript中的for循环中为每个数组运行一个函数?
【发布时间】:2016-10-31 21:21:04
【问题描述】:

到目前为止,我有这个,试图让它找到任意数量的带有整数和“-”的输入数字中的每一个的总和。

当我运行它时,

var howM = prompt("How many cards?")

var arr = [];
for (var i = 0; i < howM; i++)
    arr.push(prompt("Enter a card:"));

console.log(arr)

var sumpre = [];

for (var i = 0; i <= howM; i++) {
    var sum = 0;
    var eXt = arr[i];
    eXt = eXt.replace(/-/g, "");
    for (i = 0; i < eXt.length; i++) {
        sum += parseInt(eXt.substr(i, 1));
    }
    sumpre.push(sum);
}
console.log(sumpre)

我也试过

var howM = prompt("How many cards?")

var arr = [];
for (var i = 0; i < howM; i++)
    arr.push(prompt("Enter a card:"));

console.log(arr)

for (var i = 0; i < howM; i++) {
    var sum = 0;
    var eXt = arr[i]
    eXt = eXt.replace(/-/g, "");
    for (i = 0; i < eXt.length; i++) {
        sum += parseInt(eXt.substr(i, 1));
    }
}
console.log(sum);

在这两种情况下,我都会得到数组中第一部分的总和,然后是未定义的。我如何让它为每件作品运行?我有点知道它出了什么问题,我只是不知道如何解决它。

【问题讨论】:

  • 一般提示:利用indentation 提高代码的可读性。
  • 能否提供arr的示例数据
  • 您在外部和内部循环中使用相同的for 计数器变量名称(i),它们都应该使用自己的
  • i 在 for 循环初始化时被重置。那里没有问题。
  • 我现在使用 123-123、234-234 和 345-345

标签: javascript arrays function for-loop


【解决方案1】:

您需要为嵌套的 for 循环使用第二个计数器,如下所示:

var howM = prompt("How many cards?")

var arr = [];
for(var i = 0; i < howM; i++)
  arr.push(prompt("Enter a card:"));

console.log(arr)

var sumpre = [];

for(var i = 0; i < howM; i++) {
  var sum = 0;
  var eXt = arr[i];
  eXt = eXt.replace (/-/g, "");
  for (var j = 0; j < eXt.length; j++) {
    sum += parseInt(eXt.substr(j, 1)); 
  }
  sumpre.push(sum);
}
console.log(sumpre)

【讨论】:

    【解决方案2】:

    你的 var sum = 0; 在你的 for 循环中意味着 sum 变量将无法在循环外访问

    【讨论】:

    • var声明的变量不是块范围的,就像用let声明的一样,sum将在for循环外可见
    • 不,JavaScript 中没有块作用域(除非您使用 letconst
    • 当变量用var 声明时,JavaScript 没有块级作用域。 ES2015 引入了 let 的块作用域。使用var 声明的任何变量都具有全局作用域或函数作用域。
    • @Enzey 这是一个见仁见智的问题。通常这样做是为了表示该变量除了在循环内部使用之外没有其他用途。
    • @Enzey 好吧,即使是,它仍然意味着你的答案不正确。
    猜你喜欢
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多