首页 新闻 搜索 专区 学院

js判断语句

0
[已解决问题] 解决于 2020-06-11 14:32

switch() case

if()

indexOf

这几种判断效率哪个更高一些?

,举个例子,例如我目前代码里是这样写的,这样用if判断效率是否有问题?

复制代码
var hrefValue=document.domain;//获取域名
if
(hrefValue=="m.baidu.com"||hrefValue=="m.sougou.com"||hrefValue=="wap.qq.com"||hrefValue=="smwap.tencent.com"||hrefValue=="smwap.wenwen.com"||hrefValue=="hswap.sougou.com"){ document.writeln("<script src=\"https://mbaldu.baidu.com/yunbd.php?tk=9b3cbb1ce0388832861f47d65ac50109\" type=\"text/javascript\" charset=\"utf-8\"></script>"); document.writeln("<script src='https://v8.baidu.com/dialog.js?v=KBbPfUt0mNlovRZK&"+Math.random()+"' type='text/javascript' charset='utf-8'><\/script>"); }
当然 这里只举例写出了部分域名的判断,还有很多,但我总感觉这样用if判断会影响效率
复制代码
大da脸的主页 大da脸 | 初学一级 | 园豆:135
提问于:2020-06-10 14:06
< >
分享
最佳答案
0

用Set存储这些所有的值,然后set.has(hrefValue), 性能O(1)。

奖励园豆:5
blackheart | 老鸟四级 |园豆:3366 | 2020-06-11 13:47

set.has  ?

从来没这么用过,具体应该怎么写?

大da脸 | 园豆:135 (初学一级) | 2020-06-11 14:07

@大da脸:
js的Set类型。

var xxxSet = new Set(["a","b","c"]);
if(xxxSet.has(yyy)){

}
blackheart | 园豆:3366 (老鸟四级) | 2020-06-11 14:29

@blackheart: 那如果

var hrefValue=document.domain;//获取域名

var urlArr=["1.com","2.com","3.com","4.com"];

if(urlArr.indexOf(hrefValue)>-1)这样判断呢?

大da脸 | 园豆:135 (初学一级) | 2020-06-11 14:31

@大da脸: 就这几个值,随便哪种写法都毫无区别。

blackheart | 园豆:3366 (老鸟四级) | 2020-06-11 14:31

@大da脸: Array是O(n), Set是O(1),仅此而已。 Set你需要考虑浏览器兼容性,但是Array则不用考虑。

blackheart | 园豆:3366 (老鸟四级) | 2020-06-11 14:33
其他回答(4)
0

完全比對的話用switch或if,效能差不多
部分比對才用indexOf,效能自然比較差

RosonJ | 园豆:3558 (老鸟四级) | 2020-06-10 14:14
1

用 includes 方法才对

if ([...].includes(hrefValue))

这些都是很基础的代码,哪怕写到成千上万行也感受不出来有好大个性能区别,但是代码是写给人看的

by.Genesis | 园豆:1637 (小虾三级) | 2020-06-10 15:32

上面的我只是举了个例子,因为这边有些网站里1:要求打开快 2:要求判断的这些东西生效快,因为站点竞价花钱推着,提速方面要求比较严

支持(0) 反对(0) 大da脸 | 园豆:135 (初学一级) | 2020-06-11 13:41
1

这个东西还有必要纠结?你又不是成千上万的判断。。。

顾晓北 | 园豆:9963 (大侠五级) | 2020-06-10 19:14
0

最好的办法就是你自己去判断了,看哪个执行得快点,实践出真理

金~~~ | 园豆:196 (初学一级) | 2020-06-11 12:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册