首页 > 解决方案 > For 循环仅在数组参数上运行一次

问题描述

我正在尝试创建一个基本的 for 循环,它将遍历函数的参数。可以有可变数量的参数,因此我为此目的使用内置的“参数”对象。但是,嵌套在函数内的 for 循环似乎在参数的第一个索引之后停止。

我在这里阅读了一些类似的查询,这些查询建议在 for 循环中声明变量,以便它是函数的本地值而不是全局值,但这似乎也不起作用。

  function tickets(){

  var change = 0;

  for(var j = 0;j < arguments.length; j++) {
    if (arguments[j] == 25) {
     return(change + 1);
   }
    else if(arguments[j] == 50) {
      return(change - 1);
    }
    else {
      return(change - 3);
    }
  }
}

console.log(tickets(25, 25 ,50, 25, 100))

我希望上面的代码能够记录:

1 1 -1 1 -3

但它只返回 1,或者我将参数列表中的第一个值更改为的任何值。这看起来很简单,但让我摸不着头脑——有什么想法吗?

标签: javascriptarraysfunctionfor-loop

解决方案


那么函数在第一次返回时停止,您必须将所有结果添加到数组中并在循环结束后返回数组

 function tickets(){

  var change = 0;
  var responses = [];

  for(var j = 0;j < arguments.length; j++) {
    if (arguments[j] == 25) {
     responses.push((change + 1));
   }
    else if(arguments[j] == 50) {
      responses.push((change - 1));
    }
    else {
      responses.push((change - 3));
    }
  }

  return responses;
}

console.log(tickets(25, 25 ,50, 25, 100))

推荐阅读