2016-04-04 54 views
0

我有以下对象,我想排序。关键是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 
} 

该键是一个整数值;

UPDATE

我已经试过这仍然无法正常工作

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 

回答

0

我不得不键进行排序,然后从原始对象获得那么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 
      }); 
     } 
0

无法排序的对象。这是无序的。您可以使用Map,或者只是对其键进行排序。

Object.keys(obj).sort((a,b) => a > b); 
1

我认为对排序具有键值对的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将具有各自keys排序的所有值阵列。虽然请考虑根据您的需要更改排序比较功能。

+0

这不是一个字母数字排序? – Tom

+0

这产生了空值 – shorif2000

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

显式类型转换的数字排序。

+0

这只返回值 – shorif2000

+0

没错,但关键是你有使用..这就是k。 – Tom

0
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; 
}); 
+0

这只返回键 – shorif2000