EDIT
this here is blazing fast as it changes only what it needs.
function test(a){
var p={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'}
for(var b in a){p[b]=a[b]}return p;
}
console.log(test({p1:'1000',p3:'2000'}));
this is one way to go
1.define your default params in defaulParams
2.pass to the test function a similar object containing the params
var
defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},
test=function(a){
var myparams={}
for(var b in defaultParams){
myparams[b]=a[b]||defaultParams[b];
}
return myparams
}
console.log(test({p1:'1000',p3:'2000'}));
another way to write this if it does not work for you.
function test(a){
var defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},myparams={};
for(var b in defaultParams){
myparams[b]=a[b]||defaultParams[b];
}
return myparams
}
so now to extecute the function:
var anewlistofparams=test({p1:'1000',p3:'2000'})
or
var ihavethisparams={p1:'1000',p3:'2000'};
var anewlistofparams=test(ihavethisparams);
.
.
wrong way ... don't do that ... BAD
var
test=function(){
var defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},myparams={};
for(var a=0,b=arguments.length;a<b;a++){
myparams['p'+(a+1)]=(arguments[a]!=''?arguments[a]:defaultParams['p'+a]);
}
return myparams
}
console.log(test('1000','','2000','','',''));
also the array way is bad....
var
test=function(){
var defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},myparams=[];
for(var a=0,b=arguments.length;a<b;a++){
myparams[a]=(arguments[a]!=''?arguments[a]:defaultParams['p'+a]);
}
return myparams
}
console.log(test('1000','','2000','','',''));
why??
because if u have may parameters u end up by sending something like this each time
test('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','1','','','','','','','3','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');
using object with it's param name
test({p2589:'2589'});