使用.shift()更新数组'5个元素

Using .shift() to Update an Array's Elements

本文关键字:5个 元素 数组 shift 更新 使用      更新时间:2023-09-26

我正在努力解决一个非常简单的问题,但我一直在一遍又一遍地思考,似乎不知道该怎么做。

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在每次运行函数时(并随后在第一次调用函数后运行else条件)都能识别第一个元素已从fastPassQueue中删除,但我不知道如何做到这一点。我试过将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();

小提琴