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:
- update objects value arguments value if have same name.
- 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
Post a Comment