我的javascript代码中有一个JSON对象列表:
var cached4= [];
cached4.push({ Frame: 'frame', TS: 20150809101523723 });
cached4.push({ Frame: 'frame', TS: 20150809101513165 });
cached4.push({ Frame: 'frame', TS: 20150809101514988 });
我现在想以TS顺序重新排序这个数组,以便我的结果如下:
20150809101513165
20150809101514988
20150809101523723
现在显然我可以像这样枚举数组:
cached4.forEach(function (entry) {
cached4.shift();
});
但是有没有一种'linqy'式的方法呢?
答案 0 :(得分:3)
您可以使用Array.prototype.sort:
sort()方法对数组中的元素进行排序并返回数组。排序不一定稳定。默认排序顺序是根据字符串Unicode代码点。
var sortedCached4 = cached4.sort(function (a, b) {
return a.TS - b.TS;
});
通过提升TS来对值进行排序:
[
{"Frame":"frame","TS":20150809101513165},
{"Frame":"frame","TS":20150809101514988},
{"Frame":"frame","TS":20150809101523723}
]
编辑:请注意,您的TS大于最安全的整数值9007199254740991,这意味着它们会失去精确度,有关详细信息,请参阅What is JavaScript's highest integer value that a Number can go to without losing precision?。
要测试它,请将20150809101513165
输入控制台并查看结果。
编辑2:正如评论中所指出的,与-
相比更好。