如何在Javascript中将对象数组合并到JSON数组中

时间:2014-06-11 13:16:44

标签: javascript arrays json

我惨败于结合所有必需的转换。对于那些更容易使用数据操作的人,我们非常感谢您的帮助,谢谢。

我想要完成的事情的视觉表现:

[
    [
        {
            name : 'a',
            value : 'b'
        },
        {
            name : 'c',
            value : 'd'
        },
        ...
    ],
    [
        {
            name : 'e',
            value : 'f'
        },
        {
            name : 'g',
            value : 'h'
        },
        ...
    ],
    ...
]

// to

[
    {
        a : 'b',
        c : 'd'
    },
    {
        e : 'f',
        g : 'h'
    },
    ...
]

3 个答案:

答案 0 :(得分:2)

在这里工作小提琴:http://jsfiddle.net/b8YyL/

这是代码:

var original = [
    [
        {
            name : 'a',
            value : 'b'
        },
        {
            name : 'c',
            value : 'd'
        },
    ],
    [
        {
            name : 'e',
            value : 'f'
        },
        {
            name : 'g',
            value : 'h'
        },
    ],
]


function translateNameValueObjects(items) {
    var map = {},
    item,
    i;
    for (i = 0; i < items.length; i++) {
        item = items[i];
        map[item.name] = item.value;
    }
    return map;
}

var mapped = original.map(translateNameValueObjects);
alert(JSON.stringify(mapped));

答案 1 :(得分:0)

请检查以下代码。跳这个帮助你!

var jsonArray = [
    [
        {
            name : 'a',
            value : 'b'
        },
        {
            name : 'c',
            value : 'd'
        },
    ],
    [
        {
            name : 'e',
            value : 'f'
        },
        {
            name : 'g',
            value : 'h'
        },
    ]
];

var modifiedJsonArray = [];        
if(jsonArray.length){
    for(var i=0; i<jsonArray.length; i++){
        if(jsonArray[i].length){
            for(var j=0; j<jsonArray[i].length; j++){
                modifiedJsonArray.push("{"+jsonArray[i][j].name+":"+jsonArray[i][j].value+"}")
            }
        }
    }
}

console.log(modifiedJsonArray);

JSFiddle:http://jsfiddle.net/mail2asik/f7euL/

答案 2 :(得分:0)

您可以使用reduce功能:

var data = [
 [
    {
        name : 'a',
        value : 'b'
    },
    {
        name : 'c',
        value : 'd'
    },
 ],
 [
    {
        name : 'e',
        value : 'f'
    },
    {
        name : 'g',
        value : 'h'
    }
 ]
];

data = data.reduce(function(a, b, i){
    a[i] = b.reduce(function(c, d){
        c[d.name] = d.value;
        return c;
    }, {});
    return a;
}, []);

JSFiddle http://jsfiddle.net/7whFy/1/