Это будет звучать как простая проблема, но я провел свое воскресенье, пытаясь выяснить, что не так с моей реализацией, описанной ниже, поэтому я отправляю ее в SO в качестве последнего средства.
У меня есть приложение JavaScript, которое получает структуры данных с сервера. Серверная часть отправляет данные несортированными по соображениям производительности.
Вот фрагмент кода JavaScript, получающего данные:
var seriesRawDataArray = ko.observableArray();
...
analyticscontext.series(seriesRawDataArray).done(function () {
renderSeries();
});
Модуль analyticscontext
запрашивает данные, используя ajax:
function series(seriesData) {
return $.ajax({
url: "/api/analytics/series",
type: "GET",
success: function (data) {
return seriesData(data);
}
});
}
renderSeries
выполняет сортировку данных перед их отображением:
// Sort the data by date using moment.js
seriesRawDataArray.sort(function (left, right) {
var leftDate = moment.utc(left.timeStamp);
var rightDate = moment.utc(right.timeStamp);
var diff = leftDate.diff(rightDate);
return diff > 0;
});
ПРОБЛЕМА
Вот пример данных, которые я получаю с моего сервера:
Обратите внимание на несортированные элементы в конце.
seriesRawDataArray.sort
, похоже, не влияет на исходный массив, который не сортируется, независимо от того, что я изменяю в методе сортировки. Выход всегда:
Обратите внимание на несортированные элементы здесь. Библиотеки, которые я использую, и данные определенно не проблема, так как этот jsfiddle работает просто отлично! Что-то не так с этим кодом?