简体   繁体   English

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

[英]How to merge arrays of objects into a JSON array in Javascript

I fail miserably at combining all the required transformations. 在组合所有必需的转换方面,我惨遭失败。 For those more at ease with data manipulation, a little help will be much appreciated, thank you. 对于那些更轻松地进行数据操作的人,非常感谢您的帮助。

Visual representation of what I'm trying to accomplish: 我要完成的任务的视觉表示:

[
    [
        {
            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'
    },
    ...
]

working fiddle here: http://jsfiddle.net/b8YyL/ 在这里工作的小提琴: http : //jsfiddle.net/b8YyL/

here's the code: 这是代码:

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

Please check the below code. 请检查以下代码。 hop this help you! 希望对您有帮助!

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/ JSFiddle: http : //jsfiddle.net/mail2asik/f7euL/

You can use reduce function: 您可以使用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/ JSFiddle http://jsfiddle.net/7whFy/1/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM