JavaScript对象转换

3
我希望将这个对象转换为可以这样调用的格式。
汽车.ox,自行车.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];
    })
})

如果有人能帮我解决这个问题,我将不胜感激。


2
当你调用bikes.ox时,你希望得到什么值?不知道预期结果很难进行转换。 - atmd
你的问题是什么?你是否遇到了错误?你没有得到预期的输出吗?预期的输出会是什么? - Aaron Digulla
1
对于 cars.ox,我想要数组 [100, 100],对于 cars.ot[150, 150]。 - Michał
1
我尝试了很多种方法,但最终我完全失去了所有的希望。现在你是一名开发者,孩子。 - ssube
1个回答

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/

(结果将记录在控制台中。)


1
我其实很接近了,这是真的。谢谢你的帮助 :) - Michał

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接