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 !

hakuna
  • 6,243
  • 10
  • 52
  • 77
  • 1
    may be help yot http://stackoverflow.com/questions/32470928/angular-formly-adding-form-fields-dynamically-on-user-click/35603088#35603088 – Hadi J Mar 13 '16 at 03:59

1 Answers1

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

Cyril Cherian
  • 32,177
  • 7
  • 46
  • 55
  • 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. – hakuna Mar 13 '16 at 05:16
  • 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);` https://jsfiddle.net/cyril123/teggj208/ – Cyril Cherian Mar 13 '16 at 06:59