3

I have an object like :

cols : [Object { name="firstname", type="string"}, Object { name="lastname", type="string"}, Object { name="valid", type="checkbox"} ....]

I need to create, from this object, and object like :

[
 {
 data: 'firstname'
 },
 {
 data: 'lastname'
 },
 {
 data: 'valid',
 type: checkbox
 }
]

The only rule is, if in the first object there is type="string", you just have to ignore it (check my second object). And of course it's just an example, so I need some automatic thing.

I'm trying to work in this function :

var headers = data.cols.map(function (el, index) { 
 return el.name;
});

Here I can retrieve my element el.name and el.type. But I don't know how can I create this specific object ? I tried with splice, push... but for create multiple lines etc.. I have no idea.

Felix Kling
820k181 gold badges1.1k silver badges1.2k bronze badges
asked Apr 27, 2015 at 14:48
3
  • Sorry, i'm working with symfony, but in this question it's not usefull you are right Commented Apr 27, 2015 at 14:51
  • That's not a valid object ? Commented Apr 27, 2015 at 14:52
  • JSON is a data-format, like XML or CSV. Commented Apr 27, 2015 at 15:21

2 Answers 2

3

You can use map function itself, but you need to create a new object and add all the fields based on the condition, like this

var data = [{
 name: 'firstname',
 type: 'string'
}, {
 name: 'lastname',
 type: 'string'
}, {
 name: 'valid',
 type: 'checkbox'
}];
var result = data.map(function (currentObject) {
 var object = {
 // Create an object with `name` property
 data: currentObject.name
 };
 if (currentObject.type !== 'string') {
 // create `type` property in the `object`, only if type is not `string`
 object.type = currentObject.type;
 }
 return object;
});
console.log(result);
[ { data: 'firstname' },
 { data: 'lastname' },
 { data: 'valid', type: 'checkbox' } ]
answered Apr 27, 2015 at 14:51
Sign up to request clarification or add additional context in comments.

3 Comments

It should be data: currentObject.name, shouldn't it?
Note that the initial array is invalid, and the objects within has no data properties, but in theory I suppose this could work, or something ?
@adeneo He can apply this idea, but I had to construct the object on my own. I included that also now :-)
0

use map function and return based on condition

var result = data.cols.map(function (d, i) {
 if (d.type == "string") 
 return { data: d.name } 
 else 
 return { data: d.name, type: d.type }
});
answered Apr 27, 2015 at 15:04

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.