在我的程序中,我必须提示用户输入客户信息。
这些信息包括first name
,last name
,phone number
和grocery items
(用逗号分隔每个数组)。
提示始终询问用户信息,直到用户按下取消或不输入任何内容。 例如:
peter,pho,123-324-2333, beans,carots,cereal
karen,smite,122-333-1223, milk,pudding
每次用户输入输入时,我都需要创建一个对象来存储信息,每个对象都需要一个属性杂货项目。所以我认为它是这样的。
cust = prompt("enter customer info");
while(cust != null){
var array1 = cust.split(',');
var customer = {
custinfo:array1.slice(0,3),
items:array1.slice(3,array1.length)
}
cust = prompt("enter");
}
这适用于第一位客户,但如何存储多个条目,我不知道用户将输入多少客户。我尝试创建一个对象数组,如果这有任何意义,如customer[]
,但它不起作用。我将它们分成数组,以便以后在我的作业中使用。另外,如何在用户输入任何内容之前使提示运行?
答案 0 :(得分:0)
如果您想要一个有序的项目列表,请使用Array。您可以将其与for
循环结合使用。这是一个例子
function ask_questions(questions) {
var answers = [],
i,
ans;
for (i = 0; i < questions.length; ++i) { // for infinite loop, `while (true) {`
ans = prompt(questions[i] || 'enter'); // default question
if (!ans) break; // cancel or blank ends questioning
answers[i] = ans; // do what you want with the data given
}
return answers;
}
功能 ask_questions
使用数组(比如arr
)和prompts
用户arr.length
次,然后将prompt
的结果作为另一个数组
var qs = ['enter customer info', null, 'enter2']; // null will cause message "enter"
qs.length = 4; // undefined will cause message "enter"
ask_questions(qs); // ["foo", "bar", "baz", "fizz"]
但是,这真的是最适合您的数据结构吗?您可以使用 Object 做得更好,它具有有用的属性名称而不是索引,并询问它们的具体数据,例如它们的名称和地址,而不是将它们留给它们。如果你把它全部留给他们,你可能会得到他们宠物的生活故事和他们喜欢的颜色等,甚至根本没有。
最后,prompt
不是一个好的 UX ,在最终版本中使用<input>
或<textarea>