Reputation: 905
Please forgive me for not knowing how to do this. I guess we have to use a map function or so but i am not getting it.
Here is my object 'data'.
data
[0]:
name: 'Alex'
sex: 'Male'
new_joinee: false
[1]:
name: 'Anna'
sex: 'female'
new_joinee: true
[2]:
name: 'lester'
sex: 'Male'
new_joinee: true
I want to convert the above object into this form
data
name: 'Alex', 'Anna', 'lester'
sex: 'Male', 'Female','Male'
new_joinee: false,true,true
Can someone let me know how to achieve this.
Upvotes: 0
Views: 195
Reputation: 5243
//Input data
var data = [
{name: 'Alex', sex: 'Male', new_joinee: false},
{name: 'Anna', sex: 'female', new_joinee: true},
{name: 'lester', sex: 'Male', new_joinee: true}
];
//Initialize the output object
out = {};
for(var k in data[0]) {
out[k] = [];
}
//Collect data from all input objects
data.forEach(function(item){
for(var k in item) {
out[k].push(item[k]);
}
});
results in:
out ==
{ name: [ 'Alex', 'Anna', 'lester' ],
sex: [ 'Male', 'female', 'Male' ],
new_joinee: [ false, true, true ] }
Upvotes: 2
Reputation: 22895
I am assuming your data is an array of objects
var data = parse(data)
function parse(data){
var parsedData = { name: '', sex: '', new_joinee: ''};
data.forEach(function(item){
parsedData.names += item.name;
parsedData.sex += item.sex;
parsedData.new_joinee += item.new_joinee;
});
return parsedData;
}
Upvotes: 1
Reputation: 630
If you have underscore in your project:
var keys = _.keys(myObj)
var foo = {
name: _.pick(myObj, 'name'),
sex: _.pick(myObj, 'sex'),
newJoinee:_.pick(myObj, 'new_joinee')
}
_.each(keys, function(key) { console.log(key + ' ' + foo[key].join(', ')) })
Upvotes: 1
Reputation: 8050
If this is your initial data:
var initialData =
[
{name: 'Alex', sex: 'Male', new_joinee: false},
{name: 'Anna', sex: 'female', new_joinee: true},
{name: 'lester', sex: 'Male', new_joinee: true}
];
You can transform the data to something else in the following way:
var transformed = {
name: [],
sex: [],
new_joinee: []
};
initialData.forEach(function (element) {
transformed.name.push(element.name);
transformed.sex.push(element.sex);
transformed.new_joinee.push(element.new_joinee);
});
Result
{
name: ['Alex', 'Anna', 'lester'],
sex: ['Male', 'female', 'Male'],
new_joinee: [false, true, true]
}
Upvotes: 1