Можем ли мы изменить последовательность элементов json? - PullRequest
0 голосов
/ 12 апреля 2020

Можем ли мы изменить последовательность элементов json? Например:

[
{
        "category": "Science: Mathematics",
        "type": "multiple",
        "difficulty": "medium",
        "question": "In a complete graph G, which has 12 vertices, how many edges are there?",
        "correct_answer": "66",
        "incorrect_answers1": "67",
        "incorrect_answers2 : "34",
        "incorrect_answers3 : "11"

    },
    {
        "category": "Science: Mathematics",
        "type": "multiple",
        "difficulty": "medium",
        "question": "In base 2, what is 1 + 1?",
        "incorrect_answers1": "2",
        "incorrect_answers2 : "01",
        "correct_answer": "10",
        "incorrect_answers3 : "11"
    },
    {
        "category": "Science: Mathematics",
        "type": "multiple",
        "difficulty": "medium",
        "question": "In the hexadecimal system, what number comes after 9?",
        "incorrect_answers1": "10",
        "incorrect_answers2 : "The Number 0",
        "correct_answer": "The Letter A",
        "incorrect_answers3 : "16"
    }
]

1 Ответ

0 голосов
/ 12 апреля 2020

Как уже упоминалось в комментариях, переупорядочение данных JSON невозможно, а также не требуется.

Для текущей ситуации вам нужно l oop по родительскому массиву, содержащему объекты JSON, создать переменную локального массива, чтобы получить список переупорядоченных ответов, pu sh все ответы на этот массив и перемешать его, используя библиотеку, такую ​​как loda sh (https://lodash.com/docs/#shuffle) или пользовательские случайные функции, все, что работает для ваших нужд.

Вы можете поместить этот массив в каждый объект этого JSON во время цикла и дать ему значимый ключ, такой как shuffled_answers.

Итак, теперь ваша структура элементов будет выглядеть следующим образом:

{
  "category": "Science: Mathematics",
  "type": "multiple",
  "difficulty": "medium",
  "question": "In base 2, what is 1 + 1?",
  "incorrect_answers1": "2",
  "incorrect_answers2" : "01",
  "correct_answer": "10",
  "incorrect_answers3" : "11",
  "shuffled_answers": ["2", "11", "10", "11"]
}

Затем вы можете использовать этот массив для отображения вариантов ответа в вашем пользовательском интерфейсе, чтобы задать пользователю вопрос и использовать клавишу correct_answer чтобы сравнить правильный ответ от выбора пользователя.

Я связываю здесь видеоурок для очень похожего приложения, разработанного в Vue с использованием вышеуказанной логики c. Вы можете обратиться за дополнительной информацией о таких приложениях и использовать их для своих требований.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...