【发布时间】:2015-03-16 18:35:37
【问题描述】:
这听起来是一个简单的问题,但我花了我的星期天试图找出我的实现有什么问题,所以我将它发布到 SO 作为最后的手段。
我有一个从服务器接收数据结构的 javascript 应用程序。服务器端出于性能原因发送未排序的数据。
这是接收数据的javascript代码的sn-p:
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 工作得很好! 这段代码有问题吗?
【问题讨论】:
-
@kostik 我正在使用淘汰赛排序来解决这个问题。问题在下面的答案中被发现。感谢您的帮助
标签: javascript arrays sorting knockout.js