2014-09-03 70 views
-1

我有一個類似於下面的JSON對象,我希望按日期排列前5個屬性。在JavaScript或jQuery中查找JSON對象的前5個屬性?

var json={"09/03/14":"63.7","09/02/14":"67.4","09/01/14":"67.4","08/29/14":"67.4","08/28/14":"69.4","08/27/14":"69.4","08/26/14":"178","08/25/14":"16.8","08/22/14":""} 
+2

好主意,祝你好運! – Adam 2014-09-03 12:24:58

+1

你到目前爲止嘗試過什麼? – Girish 2014-09-03 12:26:05

+0

[沒有這樣的東西作爲JSON對象](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。 – nnnnnn 2014-09-03 12:40:55

回答

1

假設你希望他們在遞增日期排序:

var json = { 
    "09/03/14": "63.7", 
    "09/02/14": "67.4", 
    "09/01/14": "67.4", 
    "08/29/14": "67.4", 
    "08/28/14": "69.4", 
    "08/27/14": "69.4", 
    "08/26/14": "178", 
    "08/25/14": "16.8", 
    "08/22/14": "" 
} 
var arr = []; 
for (d in json) { 
    arr.push({ 
     date: new Date(d), 
     d: d, 
     v: json[d] 
    }); 
} 
arr.sort(function (a, b) { 
    if (a.date < b.date) { 
     return -1; 
    } 
    if (a.date > b.date) { 
     return 1; 
    } 
    return 0; 
}); 
json = {}; 
for (var i = 0; i < 5; i++) { 
    json[arr[i].d] = arr[i].v; 
} 
console.log(json); 

要按降序順序互換從排序函數的返回值。另外請注意,這不是真正的JSON,它是一個javascript對象字面值。

小提琴:http://jsfiddle.net/ccjzzfcr/2/

+1

自定義排序函數不應該返回一個布爾值,他們需要允許小於,大於_and_等於... – nnnnnn 2014-09-03 12:43:33

+0

@nnnnnn優秀的提醒,謝謝。更新了答案。 – 2014-09-03 12:50:52

+0

@SlipperyPete謝謝你回答這個問題,但它會按升序返回日期順序。 – 2016-06-23 07:36:28

0

DEMO Link

的Javascript

var json='{"09/03/14":"63.7","09/02/14":"67.4","09/01/14":"67.4","08/29/14":"67.4","08/28/14":"69.4","08/27/14":"69.4","08/26/14":"178","08/25/14":"16.8","08/22/14":"0"}'; 
var obj= $.parseJSON(json); 
for (var prop in obj) { 
    $("#res").append("o." + prop + " = " + obj[prop]+"<br />"); 
    console.log("o." + prop + " = " + obj[prop]); 
} 

更新1:

按此帖子中描述的日期排序。 Sort object by date

+2

問題中顯示的代碼已經是一個對象,而不是JSON,因此不需要解析它。代碼按日期排序? – nnnnnn 2014-09-03 12:35:19

+0

請參閱我的更新1. – Hamix 2014-09-03 12:42:18