Javascript对象转换

时间:2014-12-18 14:57:55

标签: javascript object

我想转换这个对象,以便我可以这样称呼它

cars.ox,bikes.ox

var baseValue = [
    {
        '2014-12-01': {
            'cars;ox;2014-12-01':100,
            'cars;ot;2014-12-01':150,
            'bikes;ox;2014-12-01':50,
            'bikes;ot;2014-12-01':80
        },
        '2014-12-02': {
            'cars;ox;2014-12-02':100,
            'cars;ot;2014-12-02':150,
            'bikes;ox;2014-12-02':50,
            'bikes;ot;2014-12-02':80
        }
    }
]

我尝试以多种方式做到这一点,但最后我完全失去了所有希望。

var category = []

var obj = baseValue[0]

Object.keys(obj).forEach(function(key) {
    var dane = obj[key]
    Object.keys(dane).forEach(function(key) {
        splitted = key.split(';')
        var category = splitted[0]
        var serviceName = splitted[1];
    })
})

如果有人帮助我,我将不胜感激

1 个答案:

答案 0 :(得分:1)

我认为你很接近,你只需要创建对象,如果它们不存在你想要的键。也许是这样的。

var obj = baseValue[0]
var result = {};
Object.keys(obj).forEach(function(key) {
    var dane = obj[key]
    Object.keys(dane).forEach(function(key) {
        splitted = key.split(';')
        var category = splitted[0]
        var serviceName = splitted[1];
        if(!result[category]) {
            result[category] = {};
        }
        if(!result[category][serviceName]) {
            result[category][serviceName] = [];
        }

        result[category][serviceName].push(dane[key]);
    })
});

http://jsfiddle.net/6c5c3qwy/1/

(结果记录到控制台。)