How to update an array of object in javascript -


say have variable

 data=[]    //this variable array of object   data = [      {name:'a',value:'aa'},      {name:'b',value:'bb'}  ]   // data structrue can not changed , initial value empty 

now want update data

 function updatedata(){      if(!data.length){          data.push(arguments)      }      else{          //this parts confuse me      }   } 

this function must accept number of arguments,and order of objects in data dose not matters update rule:

  1. update objects value arguments value if have same name.
  2. add arguments data if none of object in data have same name.

how write function?

 updatedata([      {name:'a',value:'aa'},      {name:'b',value:'bb'}  ])  // expect data = [            {name:'a',value:'aa'},            {name:'b',value:'bb'}            ]   updatedata([      {name:'a',value:'aa'},      {name:'b',value:'dd'},      {name:'c',value:'cc'} ] )  // expect data = [            {name:'a',value:'aa'},            {name:'b',value:'dd'},            {name:'c',value:'cc'}            ] 

as ashutosh upadhyay suggested use name value pair instead of array:

var data ={};  var updatedata=function(){   var len = arguments.length,   i=0;   for(i=0;i<len;i++){     data[arguments[i].name]=arguments[i].value;   } }; updatedata(  {name:"a",value:"22"},   {name:"b",value:"2"},   {name:"c",value:"3"},   {name:"a",value:"1"} // new value ); for(key in data){   if(data.hasownproperty(key)){     console.log(key + "=" + data[key]);   } } 

just read comment array, if have have array can:

var data = []; function findindex(name){   var = 0;   for(i=0;i<data.length;i++){     if(data[i].name===name){       return i;     }   }   return i; } function updatedata(){   var = 0;   for(i=0;i<arguments.length;i++){     data[findindex(arguments[i].name)]=arguments[i];   } } updatedata(  {name:"a",value:"22"},   {name:"b",value:"2"},   {name:"c",value:"3"},   {name:"a",value:"1"} // new value );  console.log(data); 

Comments