简体   繁体   English

我可以使用日期对象作为JSON对象javascript中的键吗?

[英]Can i use date object as key in JSON object javascript?

I recieved strings of dates in my Javascript as keys of JSON object. 我在Javascript中收到了日期字符串作为JSON对象的键。 I want to replace the keys with their Date objects. 我想用其Date对象替换键。 So i did this.(postdata is the name of JSON object) 所以我做到了。(postdata是JSON对象的名称)

    for (var key in postdata){
        var temp = postdata[key];
        postdata[parseDate(key)] = temp;
        delete postdata[key];           
    }

This is the parseDate function.. 这是parseDate函数。

    function parseDate(input) {
        var parts = input.split('-');
        return new Date(parts[0], parts[1]-1, parts[2]);
    }

But when i retrieved the keys later and try to sort the keys its not working. 但是,当我稍后检索密钥并尝试对密钥进行排序时,它不起作用。

    var date_sort_asc = function (date1, date2) {
         if (date1 > date2) return 1
        if (date1 < date2) return -1
        return 0
    };
    for (var key in postdata){
        graph_label.push(key)
    }
    graph_label.sort(date_sort_asc)

I tried this on list of dates and it worked perfectly. 我在日期列表上尝试了此方法,效果很好。 But when retrieved from JSON as keys its not working? 但是,当从JSON作为键检索时,它不起作用吗?

In JavaScript keys of object always convert to strings so it is not good practice to store Date as key of object. 在JavaScript中,对象的键始终会转换为字符串,因此将Date存储为对象的键不是一个好习惯。 I think it is better to create array of objects. 我认为创建对象数组更好。

Here is code: http://jsbin.com/tijamepu/1/edit?js,console,output 这是代码: http : //jsbin.com/tijamepu/1/edit?js,控制台,输出

You can use strings as property names. 您可以使用字符串作为属性名称。

If you try to use a Date object, .toString() will be called on it automatically giving you a property name such as "Tue Apr 01 2014 07:27:26 GMT+0100 (BST)" . 如果您尝试使用Date对象,则会自动在其上调用.toString() ,并为您提供一个属性名称,例如"Tue Apr 01 2014 07:27:26 GMT+0100 (BST)"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM