javascript - 是否有办法减少相同 if 语句中的代码?

标签 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])};
    if(arg[i].slice(0,2)==='he'){he.push(arg[i])};
}

这里我有 4 个 if 语句;它们是相同的,我如何减少代码。

最佳答案

有很多方法可以做到这一点。这是我知道的两种方法:

使用switch语句:

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=[];
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])
}

关于javascript - 是否有办法减少相同 if 语句中的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607036/

相关文章:

javascript - 在 Node.js 中让方法返回 Bluebird 的虚拟 promise 的正确方法是什么

javascript - 如何从 react 导航中删除默认样式?

javascript - 由于平台限制,无法更改 jquery 加载位置(在页脚中)。加载后需要在正文中加载脚本

javascript - ']' 上的 'typeof $(document)[' 有什么作用?

javascript - 网络 worker : how to know if the browser supports it?

javascript - 在 JavaScript 闭包中使用 'this'

javascript - HTML/CSS 广告定位

javascript - 如何在 Rxjs 中对不完整序列进行 Observable 计数

javascript - 如何防止用户在不使用禁用的情况下更改选择的值?

javascript - file.match(regex) 与提供的文件名不匹配