Можно ли перетасовать результат анализа json из ajax?
$.ajax({
method: 'GET',
url: '/-pathSomething-/--ExampleOnly--',
data: { sample: sample, sample: sample, sample: sample },
success: function (result) {
var ExamDislayQNChoiceML = JSON.parse(result);
}
});
это выглядит так
Я не знаю, как это сделать, поэтому у меня мало кода для показа.
ожидаемый результат. случайно
{ QuesNo: 3, QuesID: 3, ... }
{ QuesNo: 1, QuesID: 1, ... }
{ QuesNo: 4, QuesID: 4, ... }
{ QuesNo: 2, QuesID: 2, ... }
{ QuesNo: 5, QuesID: 5, ... }
Подумайте о перетасовке массива. Если вам нужно отсортировать свойства объекта, вы, вероятно, могли бы перетасовать массив ключей объекта. А пока скопируйте и вставьте текст [javascript]fisher yates
в поле поиска в верхней части этой страницы и нажмите клавишу ввода.
это может сделать ваш запрос
let myJSON = {
"name": "John",
"age": 30,
"city": "New York"
};
let myArray = Object.entries(myJSON);
for (let i = myArray.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[myArray[i], myArray[j]] = [myArray[j], myArray[i]];
}
myJSON = Object.fromEntries(myArray);
console.info(myJSON);
Это будет выход
{
"city": "New York",
"name": "John",
"age": 30
}
используйте алгоритм тасования Фишера-Йейтса, вот ссылка на документацию: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle и вот пример того, как использовать его для перемешивания массива объектов
$.ajax({
method: 'GET',
url: '/-pathSomething-/--ExampleOnly--',
data: { sample: sample, sample: sample, sample: sample },
success: function (result) {
var ExamDislayQNChoiceML = JSON.parse(result);
shuffleArray(ExamDislayQNChoiceML);
console.info(ExamDislayQNChoiceML); // shuffled array
}
});
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
Предполагая, что вы хотите перетасовать массив объектов вопросов: вы можете передать метод Math.random() в метод Array.sort(). Math.random() возвращает число с плавающей точкой от 0 до 1. Когда вы вычитаете 0,5 из результата Math.random(), функция сравнения Array.sort() возвращает случайное положительное или отрицательное значение, поэтому массив перемешивается:
const shuffleArray = arr => arr.sort(() => Math.random() - 0.5);
const shuffledArr = shuffleArray(arr);
Что вы имеете в виду под перемешиванием?