将多个数据条目存储到javascript对象中?

时间:2015-06-22 00:05:41

标签: javascript arrays

在我的程序中,我必须提示用户输入客户信息。 这些信息包括first namelast namephone numbergrocery 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[],但它不起作用。我将它们分成数组,以便以后在我的作业中使用。另外,如何在用户输入任何内容之前使提示运行?

1 个答案:

答案 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>