Как дела?
Я только что проверил это, и есть пара вещей, которые вы можете изменить.
Прежде всего, вы используете "сортировку"решение от человека, который спросил, а не фактическое решение, поэтому вам сначала нужно переписать ваши order_top_scores, например:
var order_top_scores = function (prop, arr,reverse) {
if(!reverse) reverse = 0;
prop = prop.split('.');
var len = prop.length;
arr.sort(function (a, b) {
var i = 0;
while( i < len ) { a = a[prop[i]]; b = b[prop[i]]; i++; }
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
});
if(reverse){arr.reverse()};
return arr;
};
Анализируя эту функцию, я добавил третий параметр "reverse", который ожидаетлибо true, либо false (потому что исходное решение упорядочивает его от низшего к высшему, и в этом случае вы хотите обратное)
Теперь, когда у вас есть эта функция, есть две вещи, которые вы хотите иметь в виду:
Первый
В этой строке:
var ordered_scores = order_top_scores(returnedData);
Вы не отправляете первый обязательный параметр, который фактически сообщает функции, какое свойство вы хотите получить для объектаотсортировано по: В данном случае, «оценка».
Итак, вы должны вызвать функцию следующим образом:
var ordered_scores = order_top_scores('score',returnedData);
И если вы хотите, чтобы она была отсортирована от высокой к низкой,как это:
var ordered_scores = order_top_scores('score',returnedData,true);
Второй
Кроме того, имейте в виду, что вы выводите значение «returnData», а не значение order_scores, поэтому, если эта строка:
console.log(returnedData);
выводит неопределенное значение, это означает, что ваши данные JSON неверны,Чтобы убедиться, что сортировка работает, вы должны также вывести order_scores следующим образом:
console.log(ordered_scores);
Дайте мне знать, если что-то неясно.
Cheers!