Reputation: 1563
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'
},
...
]
Upvotes: 0
Views: 79
Reputation: 161
You can use reduce function:
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/
Upvotes: 0
Reputation: 7977
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/
Upvotes: 0
Reputation: 26386
working fiddle here: 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));
Upvotes: 2