我正在尝试创建一个基本的for循环,该循环将遍历函数的参数。参数的数量可以变化,因此我将内置的“ arguments”对象用于此目的。但是,嵌套在函数中的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,或将参数列表中的第一个值更改为任何值。这似乎很简单,但是我挠头了-有什么想法吗?
答案 0 :(得分:0)
该函数在到达第一个返回值时停止,您必须将所有结果添加到数组中,并在循环结束后返回该数组
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))
答案 1 :(得分:0)
由于您使用的是return
,因此无需继续就可以退出整个功能。您可以通过多种方法来处理这种情况-一种方法是代替返回保存结果并最终返回,如Mamun在回答中解释的那样;或者,如果您希望以这种方式进行操作,则可以尝试使用map
来表示相同的结果< / p>
function tickets(){
var change = 0;
return Array.from(arguments).map((d,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))
答案 2 :(得分:0)
您的函数不需要任何参数。 您需要在函数声明中添加参数。它就像您希望函数接受和处理的参数的占位符。在这种情况下: 功能票(参数){ }
我建议对参数列表和结果列表使用数组。 因此,函数调用为: 门票([25,25,50,25,100])
正如其他人所建议的-您可以改用array.map(),array.reduce()或forEach()。
如果出于某些原因强制使用for循环,则可能是这样的答案:
function tickets(arguments) {
var result = [];
for (var j = 0; j < arguments.length; j++) {
var change = 0;
if (arguments[j] == 25) {
result.push(change + 1);
} else if (arguments[j] == 50) {
result.push(change - 1);
} else {
result.push(change - 3);
}
}
return result;
}
console.log(tickets([25, 25, 50, 25, 100]));
答案 3 :(得分:-1)
return
退出函数执行。根据您的情况,将每个return
更改为console.log