1

I have an Object like this:

var myObject= [
{"name":'Tom', "city":'Chicago',"GroupCode":'1'}, 
{"name":'Harry', "city":'Wisconsin',"GroupCode":'1'}, 
{"name":'Rob', "city":'Los Angeles',"GroupCode":'2'}, 
{"name":'Peter', "city":'Seattle',"GroupCode":'2'}, 
{"name":'Dave', "city":'New York',"GroupCode":'3'}, 
{"name":'Steve', "city":'Boston',"GroupCode":'3}
];

transforming as

var myObject= [
    {"name":'Tom', "city":'Chicago',"GroupCode":'1'}, 
    {"name":'Harry', "city":'Wisconsin',"GroupCode":'1'}, 
    {"name":'--', "city":'--',"GroupCode":'--'}, 
    {"name":'Rob', "city":'Los Angeles',"GroupCode":'2'}, 
    {"name":'Peter', "city":'Seattle',"GroupCode":'2'}, 
    {"name":'--', "city":'--',"GroupCode":'--'}, 
    {"name":'Dave', "city":'New York',"GroupCode":'3'}, 
    {"name":'Steve', "city":'Boston',"GroupCode":'3} 
    ]; 

using the following code to add new records in between when ever GroupCode is changing:

var gc = myObject[0].GroupCode;
myObject.forEach(function(ob, index) {
  if (gc != ob.GroupCode) {
    gc = ob.GroupCode;
    //insert this object
    myObject.splice(index, 0, {
      "name": '--',
      "city": '--',
      "GroupCode": '--'
    });
  }
})

How can i make the keys/columns dynamic here ?

myObject.splice(index, 0, {
          "name": '--',
          "city": '--',
          "GroupCode": '--'
        });

1 Answer 1

1

You can do it like this:

myObject.forEach(function(ob, index) {
  if (gc != ob.GroupCode) {
    gc = ob.GroupCode;
    keys = Object.keys(ob);
    var a = {};
    //dynamically creating keys in object
    a[keys[0]] = '--'
    a[keys[1]] = '--'
    a[keys[2]] = '--'
    //insert this object
    myObject.splice(index, 0, a);
  }

})

working code here

Or you can do it like this too making it more dynamic.

myObject.forEach(function(ob, index) {
  if (gc != ob.GroupCode) {
    gc = ob.GroupCode;
    keys = Object.keys(ob);
    var a = {};
    //iterate over  keys and make object
    keys.forEach(function(key){
      a[key] = '--'
      a[key] = '--'
      a[key] = '--'
    })
    //insert this object
    myObject.splice(index, 0, a);
  }

})

working code here

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you Cyril, That helped me.

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.