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

时间:2014-04-01 06:17:47

标签: javascript json

我在Javascript中收到了日期字符串作为JSON对象的键。我想用Date对象替换键。所以我这样做了。(postdata是JSON对象的名称)

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

这是parseDate函数..

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

但是当我稍后检索到密钥并尝试对密钥进行排序时,它无效。

    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)

我在日期列表上尝试了这个并且它工作得很好。但是当从JSON检索为关键时它不起作用?

2 个答案:

答案 0 :(得分:1)

在JavaScript的对象键中总是转换为字符串,因此将Date存储为对象的键是不好的做法。我认为创建对象数组会更好。

以下是代码:http://jsbin.com/tijamepu/1/edit?js,console,output

答案 1 :(得分:0)

您可以使用字符串作为属性名称。

如果您尝试使用Date对象,系统会自动调用.toString(),为您提供"Tue Apr 01 2014 07:27:26 GMT+0100 (BST)"等属性名称。