Javascript object transformation

I want to convert this object so that I can call it this way

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
        }
    }
]

      

I try to do it in different ways, but in the end I completely lost all hope.

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];
    })
})

      

I would be grateful if someone can help me with this

+3


source to share


1 answer


I think you were close, you just need to create objects if they don't exist for the keys you want. Perhaps something like this.

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/

(The result is written to the console.)

+1


source







All Articles