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...