2015-06-22 52 views
3

在我的程序中,我必須提示用戶輸入客戶信息。 該信息包括first name,last name,phone numbergrocery items(用逗號分隔每個數組)。將多個數據條目存儲到JavaScript對象中?

提示不斷詢問用戶的信息,直到用戶按下取消或不輸入任何內容。 例如:

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[],但它不起作用。我將它們拆分成數組供以後在作業中使用。另外,如何讓提示運行直到用戶不輸入任何內容?

+4

*「我試圖創建對象的數組,如果讓任何意義,像顧客[],但它沒有工作。「*請告訴我們你的嘗試。 [**閱讀有關數組**的JavaScript教程]之後,您不應該有任何使用數組的問題(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections#Array_object) 。 –

回答

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 S的結果作爲另一個陣列

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"] 

但是,這真的是最好的da ta結構爲你?您可以使用對象做得更好,該對象具有有用的屬性名稱而非索引,並要求他們輸入特定的數據片段,例如其名稱和地址,而不是將它們留給它們。如果你把它放在他們身上,你可能會得到他們的寵物的生活故事和他們最喜歡的顏色等,甚至沒有。

最後,prompt是不是一個好UX,在最終版本使用<input><textarea>小號

相關問題