繁体   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