带开关的Javascript查询

带开关的Javascript查询,javascript,Javascript,我是javascript新手,试图完成让用户与简单联系人数组交互的简单任务,我正在努力找到正确的语法来循环选择变量,直到用户输入0退出,我已经尝试了一段时间的循环,但只是不确定我应该把循环放在哪里,建议将不胜感激 var Contact = { //Initialise the contact init: function(firstName, lastName) { this.firstName = firstName; this.lastNam

我是javascript新手,试图完成让用户与简单联系人数组交互的简单任务,我正在努力找到正确的语法来循环选择变量,直到用户输入0退出,我已经尝试了一段时间的循环,但只是不确定我应该把循环放在哪里,建议将不胜感激

var Contact = {
    //Initialise the contact
    init: function(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    },
    //Display the contact details
    describe: function() {
        var description = "Last name : " + this.lastName + ", first name: " + this.firstName; 
        return description
    }
};

var contact1 = Object.create(Contact);
contact1.init("John", "Smith");

var contact2 = Object.create(Contact);
contact2.init("Jane", "Doe");

var contacts = [];
contacts.push(contact1);
contacts.push(contact2);


console.log("Welcome to your contacts manager!");
console.log("1: List contacts");
console.log("2: Add a contact");
console.log("0: Quit");


var choice = "";
choice = prompt("Enter 1, 2 or 0");

//while (choice !== "0") {

switch (choice) {
case "1": 
    console.log("Here's the list of all your contacts:");
    contacts.forEach(function (contact) {
    console.log(contact.describe());
    });
    console.log("1: List contacts");
    console.log("2: Add a contact");
    console.log("0: Quit");
    break;

case "2": 
    contacts.push(prompt("Enter new name: "));
    console.log("Contact added");
    console.log("1: List contacts");
    console.log("2: Add a contact");
    console.log("0: Quit");
    break;

case "0":
    console.log("Goodbye");
    console.log("1: List contacts");
    console.log("2: Add a contact");
    console.log("0: Quit");
    break;

default:
    console.log("Invalid Entry");
    console.log("1: List contacts");
    console.log("2: Add a contact");
    console.log("0: Quit");
    break;
    }

在开关情况下,您正在检查字符串“0”。用例0:或将输入转换为字符串并将数据传递给switch。

您希望用户输入多个内容,因此可以在循环中输入提示:

var choice = "";
while (choice !== "0") {
  choice = prompt("Enter 1, 2 or 0");
  switch(choice){
   //...
  }
}

请查看更新的while循环

var触点={
//初始化联系人
init:函数(firstName,lastName){
this.firstName=firstName;
this.lastName=lastName;
},
//显示联系人详细信息
描述:函数(){
var description=“Last name:”+this.lastName+”,first name:“+this.firstName;
返回说明
}
};
var contact1=Object.create(Contact);
联系人1.init(“约翰”、“史密斯”);
var contact2=对象。创建(联系人);
联系人2.初始(“简”、“Doe”);
var触点=[];
触点。按下(触点1);
触点。按下(触点2);
log(“欢迎使用您的联系人管理器!”);
console.log(“1:列出联系人”);
console.log(“2:添加联系人”);
console.log(“0:退出”);
var选择=”;
while(选项!=“0”){
选项=提示(“输入1、2或0”);
开关(选择){
案例“1”:
log(“这是您所有联系人的列表:”;
contacts.forEach(功能(contact){
console.log(contact.descripe());
});
console.log(“1:列出联系人”);
console.log(“2:添加联系人”);
console.log(“0:退出”);
打破
案例“2”:
contacts.push(提示(“输入新名称”);
控制台日志(“添加联系人”);
console.log(“1:列出联系人”);
console.log(“2:添加联系人”);
console.log(“0:退出”);
打破
案例“0”:
console.log(“再见”);
console.log(“1:列出联系人”);
console.log(“2:添加联系人”);
console.log(“0:退出”);
打破
违约:
控制台日志(“无效条目”);
console.log(“1:列出联系人”);
console.log(“2:添加联系人”);
console.log(“0:退出”);
打破
}

}
输入为字符串格式<代码>:)ps:不是我的否决票。我可以问你一个关于while循环的问题吗,第一次时一切都很好,但是如果我使用push添加一个联系人,然后尝试列出数组,它失败了,因为它说联系人。description不再是一个函数了?是的,所以它在你的代码中,您尝试初始化2个值,在输入中,您将名称作为单个值,没有问题我已更新了您的代码,请立即尝试。请查看更新的部分。