Javascript 是否存在从相同的if语句中减少代码的方法? var cl=[]、di=[]、sp=[]、he=[]; 对于(var i=0;i
而言,要做到这一点,还有很多方法。以下是我知道的两种方法: 使用Javascript 是否存在从相同的if语句中减少代码的方法? var cl=[]、di=[]、sp=[]、he=[]; 对于(var i=0;i,javascript,Javascript,而言,要做到这一点,还有很多方法。以下是我知道的两种方法: 使用开关语句: var cl=[],di=[],sp=[],he=[]; for(var i=0;i<arg.length;i++){ if(arg[i].slice(0,2)==='cl'){cl.push(arg[i])}; if(arg[i].slice(0,2)==='di'){di.push(arg[i])}; if(arg[i].slice(0,2)==='sp'){sp.push(arg[i]
开关语句:
var cl=[],di=[],sp=[],he=[];
for(var i=0;i<arg.length;i++){
if(arg[i].slice(0,2)==='cl'){cl.push(arg[i])};
if(arg[i].slice(0,2)==='di'){di.push(arg[i])};
if(arg[i].slice(0,2)==='sp'){sp.push(arg[i])};
if(arg[i].slice(0,2)==='he'){he.push(arg[i])};
}
将数组放入对象中,并使用[]
符号:
switch((arg[i].slice(0,2)) {
case 'cl' : cl.push(arg[i]); break;
case 'di' : di.push(arg[i]); break;
case 'sp' : sp.push(arg[i]); break;
case 'he' : he.push(arg[i]); break;
}
var cl=[]、di=[]、sp=[]、he=[];
变量映射={
cl:cl,
迪:迪,,
sp:sp,
他:他
};
对于(var i=0;i这并不是真的,因为每个数组都有单独的变量。(尽管可以使用开关
或if-else
来提高性能。)
但是,如果将数组作为单个对象的一部分,则可以大大减少if语句代码。例如:
var cl=[],di=[],sp=[],he=[];
var map = {
cl : cl,
di : di,
sp : sp,
he : he
};
for(var i=0;i<arg.length;i++){
var key = arg[i].slice(0,2);
if (map[key]) map[key].push(arg[i])
}
使用此方法,您可以创建任意数量的文件,如果需要,甚至可以从一些列表中创建。switch(..){case:…default:}
…profitFor code review visit yeah…switch()减少一点,但我不是在搜索开关。谢谢。@SakulBudhathoki你能用示例添加完整的代码吗?为了给你的代码提供建议,我们需要看到更广泛的程序的更多上下文。给出示例代码,第二种解决方案要优越得多。
var myArrays = {
cl: [],
di: [],
sp: [],
he: []
};
function pusher(arg) {
for (var i = 0; i < arg.length; i++) {
// Check to ensure length is at least 2 characters.
if(arg[i].length < 2)
continue;
var a = arg[i].slice(0, 2);
// Check to ensure value exists in myArrays.
if(myArrays[a])
myArrays[a].push(arg[i]);
}
}
var myArrays = {};
myArrays['cl'] = [];
myArrays['di'] = [];
// etc...