0

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.

4
  • 1
    You wanted to reformat object or wanted to show it in different manner on UI? Commented Jan 28, 2016 at 19:50
  • @Daniel_L- I checked the map,reduce and filter functions and wasnt finding a way to tacket this. Commented Jan 28, 2016 at 19:51
  • @PankajParkar- i need to reformat it so i can display in ag-grid properly. Commented Jan 28, 2016 at 19:52
  • 1
    Brute Force: just iterate the object and reformat it. Commented Jan 28, 2016 at 19:53

4 Answers 4

2
//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 ] }
Sign up to request clarification or add additional context in comments.

Comments

1

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]
}

Comments

1

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(', ')) })

Comments

1

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

2 Comments

hi Zohaib- i get an error stating data.forEach is not a function
sorry, I override that variable and also forgot to add an argument in function definition

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.