1

I have a JSon object array that looks as below:

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

I wanted to a add a new row with some sample values when ever the GroupCode is changing. My result shall look like :

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

How can i do that ? Please help !

1

1 Answer 1

2

You can do it 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'
}];
//store the first groupcode
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": '--'
    });
  }

})
console.log(myObject)

working code here

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

2 Comments

Thank you very much. Can you tell me how can i access the keys dynamically too ? I have my keys in an array, tried myObject.splice(index, 0, { array[0]: '--', array[1]: '--', array[2]: '--' });. Its isnt working.
you can do it like this keys = Object.keys(ob); var a = {}; a[keys[0]] = '--' a[keys[1]] = '--' a[keys[2]] = '--' //insert this object myObject.splice(index, 0, a); jsfiddle.net/cyril123/teggj208

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.