如何在 JavaScript 中管理 100 个 else if 语句?更好的方法
how to manage 100's of else if statement in javascript? better way?
我正在学习javascript。我正在尝试回答我的测验 - 对网址进行分类。如何改进对 100 个 URL 进行分类的答案。.我的回答不是那么有效。有什么帮助吗?谢谢。
var pageURL = document.location.href;
var isHealth = pageURL.indexOf("http://www.domain.com/health/");
var isCar = pageURL.indexOf("http://www.domain.com/car/");
var isFuel = pageURL.indexOf("http://www.domain.com/fuel/");
var isRoadside = pageURL.indexOf("http://www.domain.com/roadside/");
if (isHealth > -1) {
return 'health';
} else if (isCar > -1) {
return 'car';
} else if (isRoadside > -1) {
return 'roadside';
} else if (isFuel > -1) {
return 'fuel';
} else return 'other';
您可以使用 map 对象和for
循环来检查与当前页面匹配的 url:
var urls = {
health: "http://www.domain.com/health/",
car: "http://www.domain.com/car/",
roadside: "http://www.domain.com/fuel/",
fuel: "http://www.domain.com/roadside/"
};
var pageURL = document.location.href;
for (var key in urls) {
if (pageUrl.indexOf(urls[key]) > -1) {
return key;
}
}
return "other";
你可以像这样将它们映射在一起,但我不确定这是否值得:
var map = {
'health': isHealth,
'car': isCar,
'roadside': isRoadside,
'fuel': isFuel
}
for (var i in map) {
if (map[i] > -1) {
return i;
}
}
return 'other';
这是一般方法。
更好的主意
但是,您的特定问题可以使用正则表达式轻松解决:
var match = pageURL.match(/http:'/'/www.domain.com'/(.+)'//);
return (match && match[1]) || 'other';
请看这个实时示例:
function test(pageURL) {
var match = pageURL.match(/http:'/'/www.domain.com'/(.+)'//);
return (match && match[1]) || 'other';
}
alert(test('http://www.domain.com/health/')); // health
alert(test('http://www.domain.com/whatever/')); // whatever
alert(test('http://www.domain.com/')); // other
为什么不呢?
var pages = ['health', 'car', 'fuel']
var page = pageURL.split('//')[1].split('/')[1] || -1;
var index = pages.indexOf(page)
if (index !=-1)
return pages[index]
else
return 'other'
"JavaScript Trie Performance Analysis"讨论了如何在JavaScript中使用Trys进行紧凑,高效的前缀查找。
看起来您的大多数检查都可以归结为"字符串是否以 URL 前缀开头"。 这种最长的前缀检查正是 Try 的设计目的。
如果if ... else if ... else
的主体不是公式化的,则可以存储将这些主体封装为 trie 值的函数。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- Javascript:If-then语句在函数中不起作用
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 如何检查if/else语句中的随机条件
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- Node.js-承诺和锥形语句(if、switch等)-如何构建
- 如何在嵌套ng重复指令中使用控制语句(if语句)
- 如何创建语句if包含"&"
- If语句- If主体有一个类remove在滚动原生javascript
- Javascript中的if语句- if - else问题