[英]Using .shift() to Update an Array's Elements
我正在为一个非常简单的问题而苦苦挣扎,但是我一直在研究它,似乎无法弄清楚该怎么做。
http://jsbin.com/harokap/edit?js,输出
var parkRides = [["Bumbling Boats", 20], ["Scary Cyclone", 45],
["Cloudy Crevase", 10], ["Crazy Crapshoot", 5]];
var fastPassQueue = ["Crazy Crapshoot", "Cloudy Crevase", "Bumbling Boats",
"Crazy Crapshoot"];
function writeTicket(allRides,passRides,pick){
if(pick == passRides[0]){
passRides.shift();
return function(){
alert("Lucky you! You got a Fast Pass to " + pick + "!");
};
}else{
for(var i = 0; i < allRides.length; i++){
if(pick == allRides[i][0]){
return function(){
alert("Now printing ticket for " + pick + ". Your wait time is about " + allRides[i][1] + " minutes.");
};
}
}
}
}
var rideChoice = "Crazy Crapshoot";
var ticket = writeTicket(parkRides,fastPassQueue,rideChoice);
ticket();
在该代码中,我有一个名为“ fastPassQueue”的数组,我想在“ writeTicket”函数内使用passRides.shift()更新该数组。
我希望writeTicket能够识别每次我运行该函数时都已从fastPassQueue中删除第一个元素(并在第一次调用该函数后运行else条件),但是我不知道该怎么做。 我尝试将fastPassQueue添加到该函数的开头,如果我先以原始方式运行该函数,然后将其添加到该函数中,则可以正常工作,但是我不知道如何从一开始就使它起作用。
预先感谢您的任何反馈。
就像不在for
循环中返回函数,而是创建字符串,然后始终返回函数一样简单
var parkRides = [
["Bumbling Boats", 20],
["Scary Cyclone", 45],
["Cloudy Crevase", 10],
["Crazy Crapshoot", 5]
];
var fastPassQueue = ["Crazy Crapshoot", "Cloudy Crevase", "Bumbling Boats", "Crazy Crapshoot"];
function writeTicket(allRides, passRides, pick) {
if (pick == passRides[0]) {
passRides.shift();
return function () {
alert("Lucky you! You got a Fast Pass to " + pick + "!");
};
} else {
var match = "";
for (var i = 0; i < allRides.length; i++) {
if (pick == allRides[i][0]) {
match = "Now printing ticket for " + pick + ". Your wait time is about " + allRides[i][1] + " minutes.";
}
}
return function () {
alert(match);
};
}
}
var rideChoice = "Bumbling Boats";
var ticket = writeTicket(parkRides, fastPassQueue, rideChoice);
ticket();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.