簡體   English   中英

如何使用鍵值日期作為鍵對對象進行排序

[英]how to sort object with key value date as key

我有以下要排序的對象。 密鑰是Unix中的日期字段,我需要保留每個密鑰的值。 我所看到的示例擺脫了價值,但對鍵進行了排序。

{
"1458345600000":598.15,
"1458432000000":498.77000000000004,
"1458604800000":598.4699999999999,
"1458691200000":598.2900000000001,
"1458777600000":598.26,
"1458864000000":697.79,
"1459206000000":598.21,
"1459292400000":598.2800000000001,
"1459638000000":598.74,
"1457481600000":566.88,
"1457568000000":466.02000000000004,
"1457654400000":470.36,
"1457740800000":481.25,
"1457827200000":484.74000000000007,
"1457913600000":575.8199999999999,
"1458000000000":498.83000000000004,
"1458086400000":498.76,
"1458172800000":598.73,
"1458259200000":598.93,
"1458518400000":499.03999999999996,
"1458950400000":498.14,
"1459036800000":498.78,
"1459119600000":498.65999999999997,
"1459378800000":598.66,
"1459465200000":598.95,
"1459551600000":497.05
}

鍵是一個整數值;

更新

我嘗試了以下仍然無法正常工作的方法

var map = arr_cssr[key];
        console.log(JSON.stringify(map));
        Object.keys(map).sort((a,b) => parseInt(a) > parseInt(b));
        console.log(JSON.stringify(map));
        var subarr = [];
        for ( var k in map) {
            console.log(moment.unix(parseInt(k)/1000).format('YYYY-MM-DD')); 
            subarr.push({
                0 : parseInt(k),
                1 : map[k]/count
            });
        }

結果

{"1458345600000":595,"1458432000000":496,"1458604800000":595,"1458691200000":595,"1458777600000":595,"1458864000000":695,"1459206000000":596,"1459292400000":595,"1459638000000":597,"1459724400000":595,"1459810800000":695,"1457481600000":566,"1457568000000":463,"1457654400000":468,"1457740800000":480,"1457827200000":483,"1457913600000":574,"1458000000000":496,"1458086400000":496,"1458172800000":596,"1458259200000":596,"1458518400000":495,"1458950400000":495,"1459036800000":496,"1459119600000":496,"1459378800000":595,"1459465200000":596,"1459551600000":494}
{"1458345600000":595,"1458432000000":496,"1458604800000":595,"1458691200000":595,"1458777600000":595,"1458864000000":695,"1459206000000":596,"1459292400000":595,"1459638000000":597,"1459724400000":595,"1459810800000":695,"1457481600000":566,"1457568000000":463,"1457654400000":468,"1457740800000":480,"1457827200000":483,"1457913600000":574,"1458000000000":496,"1458086400000":496,"1458172800000":596,"1458259200000":596,"1458518400000":495,"1458950400000":495,"1459036800000":496,"1459119600000":496,"1459378800000":595,"1459465200000":596,"1459551600000":494}
2016-03-19
2016-03-20
2016-03-22
2016-03-23
2016-03-24
2016-03-25
2016-03-29
2016-03-30
2016-04-03
2016-04-04
2016-04-05
2016-03-09
2016-03-10
2016-03-11
2016-03-12
2016-03-13
2016-03-14
2016-03-15
2016-03-16
2016-03-17
2016-03-18
2016-03-21
2016-03-26
2016-03-27
2016-03-28
2016-03-31
2016-04-01
2016-04-02

我認為對具有鍵值對的Javascript對象進行排序沒有任何意義。 盡管在數組中它確實有意義,因為您將要更改元素的索引,但是在此對象中我們不想要那樣。

仍然,如果您希望所有值都按鍵排序,則可以使用類似以下的內容:

 var data = { "1458345600000": 598.15, "1458432000000": 498.77000000000004, "1458604800000": 598.4699999999999, "1458691200000": 598.2900000000001, "1458777600000": 598.26, "1458864000000": 697.79, "1459206000000": 598.21, "1459292400000": 598.2800000000001, "1459638000000": 598.74, "1457481600000": 566.88, "1457568000000": 466.02000000000004, "1457654400000": 470.36, "1457740800000": 481.25, "1457827200000": 484.74000000000007, "1457913600000": 575.8199999999999, "1458000000000": 498.83000000000004, "1458086400000": 498.76, "1458172800000": 598.73, "1458259200000": 598.93, "1458518400000": 499.03999999999996, "1458950400000": 498.14, "1459036800000": 498.78, "1459119600000": 498.65999999999997, "1459378800000": 598.66, "1459465200000": 598.95, "1459551600000": 497.05 }; var valuesSorted = Object.keys(data).sort().map(function(el) { return data[el]; }); console.log(valuesSorted); 

現在valuesSorted將是一個數組,其中所有值valuesSorted其各自的keys排序。 雖然請考慮根據需要更改排序比較功能。

var map = { };

map = Object.keys(map);

map.sort(function(x, y) {
 if (x > y) return -1;
 if (x < y) return 1;
 if (x == y) return 0;
});

您無法對對象進行排序。 它是無序的。 您可以改用Map ,也可以僅對其鍵進行排序。

Object.keys(obj).sort((a,b) => a > b);
var a = { ... };
var sorted = Object.keys(a).map(k=>parseInt(k)).sort((a,b)=>a-b).map(k=>a[k.toString()]);

具有顯式類型轉換的數字排序。

我必須對鍵進行排序,然后從原始對象獲取value

var map = arr_cssr[key];
        map = Object.keys(map);
        map.sort(function(x, y) {
         if (x > y) return -1;
         if (x < y) return 1;
         if (x == y) return 0;
        });
        var subarr = [];
        for (var i = 0; i < map.length; i++) {
            subarr.push({
                0 : parseInt(map[i]),
                1 : arr_cssr[key][map[i]]/count
            });
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM