操纵对象以制作不同的格式

时间:2015-02-04 12:24:07

标签: javascript jquery

对不起这个愚蠢的问题,但我也在寻找一个很好的解决方案:

我有这个对象

var obj = {
    "brand[]" : [1,2,3],
    "model[]" : [1,2,3],
    "varqnt[]" : [1,2,3]
}

现在我想要的是制作一个新的对象/数组(我认为现在不重要)应该是

var newObj = {
    'row-1': {
        brand[] : 1,
        model[] : 1,
        varqnt[] : 1
    },
    'row-2': {
        brand[] : 2,
        model[] : 2,
        varqnt[] : 2
    },
    'row-3': {
        brand[] : 3,
        model[] : 3,
        varqnt[] : 3
    }
}

棘手的部分是'brand []','model []','varqnt []'可能不会全部存在。

我会尝试解释一下...... 基本上第一个对象是来自url params,2个选择框和1个输入,但由于我在不同的“位置”使用相同的形式,因此varqnt [](输入)可能不会被呈现。

我不确定是否有人会理解我...但英语不是母语的借口:P

谢谢,如果我写了一些不完整的抱歉:(

2 个答案:

答案 0 :(得分:1)

您可以通过两个循环实现此目的。例如:



var obj = {
    "brand[]":  [12, 2,  3],
    "model[]":  [1,  2,  32],
    "varqnt[]": [1,  21, 3]
};

var newObj = {};
Object.keys(obj).forEach(function(key) {
    obj[key].forEach(function(el, i) {
        if (typeof newObj['row-' + i] == "undefined") {
            newObj['row-' + i] = {};
        }
        newObj['row-' + i][key] = el;
    });
});


alert(JSON.stringify(newObj, null, 4));




答案 1 :(得分:-1)

你可以做这样的事情并访问你对象中的每个元素

var newObj = {};
for (data in obj){
console.log(obj[data])
}