在JavaScript中重新排序JSON列表集合

时间:2015-08-08 16:24:27

标签: javascript arrays json list

我的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'式的方法呢?

1 个答案:

答案 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:正如评论中所指出的,与-相比更好。