2015-08-08 46 views
1

我在我的javascript代碼JSON對象的列表:重新排序JSON列表集合中的JavaScript

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

排序()方法代替一個排序數組的元素並返回該數組。排序不一定穩定。默認的排序順序是根據字符串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:正如在評論中指出的那樣,與-相比更好。

+1

它會更好使用 var sortedCached4 = cached4.sort(function(a,b){ return a.TS - b.TS; }); –

+1

'>'將按字符串排序,使用'-'排序爲數字。這可能與具體情況無關,但對於其他人可能有用 – smnbbrv

+1

@CraigStroman和simon,你們都是正確的。改變了比較,謝謝。 –