2015-06-22 2 views
3

В моей программе я должен предложить пользователю ввести информацию о клиенте. Информация включает в себя first name, last name, phone number и grocery 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 с как другой массив

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

Однако, это действительно лучший да ta структура для вас? Вы можете сделать лучше с Объектом, который имеет полезные имена свойств, а не индексы, и задавать им конкретные данные, такие как их имя и адрес, а не оставлять их для них. Если вы оставите все до них, вы можете получить историю жизни своего любимца, свой любимый цвет и т. Д. Или даже вообще ничего.

Наконец, prompt не является хорошим UX используйте <input> или <textarea> с в вашей окончательной редакции

Смежные вопросы