让我们说你有一个对象
var employee = [];
如何提示(使用提示功能)用户输入信息,使其如下所示:
var employee = [
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName": "Jones"}
];
当然有一个未指定数量的数组。因此,如果您的用户只输入一个员工的信息然后输入任何内容或点击取消,那么阵列将只有一个数组(对于John Doe)。
但主要的是用户输入信息直到他们决定完成信息。所以数组的数量不确定。
我需要通过循环提示执行此操作,即使我理解提示很糟糕。很多。
所以,这就是我要做的事情:
这就是我的代码。
var person = {firstname: "", lastname: ""}
var employee = []; //used to store each person
var input = "x";
for(var i = 0; input != "" && input != null; i++){
var input = prompt("Input first and last name");
var results = input.split(); //create an array from the input
person.firstname = results[0];
person.lastname = results[1];
employee[i] = person;//store the person array into the customer array.
}
console.log(employee[1]["firstname"]); //test output
console.log(employee[0]["lastname"]); //test output
当我测试输出时,我得到了未定义。我正在尝试访问特定人员的名字,但无法访问。
答案 0 :(得分:2)
你可以这样做
var flag = true, arr = [];
while (flag) {
arr.push({
firstname: prompt("What's your first name?") || "John",
lastname: prompt("What's your last name?") || "Doe"
});
flag = confirm("Do you want to continue?");
}
否则,您也可以
var arr = (prompt("What's your name with first and last name") || "John Doe").split(" ");
arr.push({
firstname: arr[0],
lastname: arr[1]
});
答案 1 :(得分:1)
您正在调用split()但不提供任何参数。如果它是一个名字,我假设第一个和最后一个被空格分割。它应该是这样的:
var results = input.split(" ");
答案 2 :(得分:0)
他们的建议都是正确的。
您的代码无效的原因是因为您只有 person 对象的单个实例,并且您的所有employee数组值都引用此person对象。 一旦输入“”,您的person对象属性就会得到一个未定义的值,因此employee数组中的值也将是未定义的。
您可以将人物对象修改为多个实例以修复此错误。
function person() {
return {firstname: "", lastname: ""};
}
;
var employee = []; //used to store each person
var input = "x";
for(var i = 0; input != "" && input != null; i++){
var input = prompt("Input first and last name");
var results = input.split(); //create an array from the input
per = person();
per.firstname = results[0];
per.lastname = results[1];
employee[i] = per;//store the person array into the customer array.
}
console.log('hi');
console.log(employee[1].firstname);