Структура данных / логики для дихотомического ключа (JS) - PullRequest
1 голос
/ 22 октября 2011

Для школьного проекта я создаю веб-приложение, которое представляет дихотомический ключ .

Во-первых, он показывает список возможных предметов. Пользователь выбирает один в своей голове. Затем приложение представляет пользователю вопрос и кнопки для Yes или No. Новый вопрос задается на основе ответа на предыдущий. Это продолжается до тех пор, пока только один элемент не будет соответствовать ответам пользователя.

У меня вопрос, как хранить данные. Моей первоначальной идеей был вложенный массив. Вот пример использования фруктов:

Options: Apple, Orange, Banana, Pear

0 - "Is it shaped like a sphere?"           Initial question
1 -                                         Yes response
    0 - "Do you eat the peel/skin?"         Subsequent question
    1 - "Apple"                             Answer based on Yes response
    2 - "Orange"                            Answer based on No response
2 -                                         No response to initial
    0 - "Is it yellow                       Subsequent question
    1 - "Banana"                            Answer based on Yes response
    2 - "Pear"                              Answer based on No response

Но этот способ может показаться довольно громоздким с большим количеством данных. Есть ли лучший способ структурировать это?

Это должен быть полностью JS / HTML; Я не хочу использовать базу данных или что-то подобное.

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

Я бы предложил использовать такую ​​таблицу (технически, это может быть массив объектов)

                                Apple Orange Banana Pear
Is it shaped like a sphere?     +     +      -      -
Do you eat the peel/skin?       +     -      -      +
Is it yellow?                   -     -      +      -

Он более гибок по сравнению с вложенными объектами или графиками, поскольку вы можете динамически определять вопросы и их порядок в зависимости от того, какие элементы выбраны.

0 голосов
/ 22 октября 2011

в JSON:

{
  "Question": "Is it shaped like a sphere?",
  "Yes":
    {
      "Question": "Do you eat the peel/skin?",
      "Yes": "Apple",
      "No": "Orange"
    },
  "No":
    {
      "Question": "Is it yellow?",
      "Yes": "Banana",
      "No": "Pear"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...