js indexOf()和for循环的执行效率那个更高

在js中供给了indexOf()函数以获取某个字符在字符串中的index,可以经由过程它也断定某个字符或字符串是否存在。


但同时在js中for轮回也可以实现同样的结果(断定字符是否存在)。那么到底用哪个才好呢?


于是写了两个函数来斗劲:


View Code

 1   <script type="text/javascript">
 2         function getValue() {
 3 
 4             var str = "abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij"
 5             var specialWord = new Array("""", "\\", "<", ">", "%", "?", "/", "+", "@", "&", "#", "¥", "……", "^", "~", "!", "‘", "’", "!", "¥"); //可以持续添加特别字符 此 /  字符也不成输入 输出时会破损JSON格局
 6             for (var specialWordItem = 0; specialWordItem < specialWord.length; specialWordItem++) {
 7                 var specialIndex = str.indexOf(specialWord[specialWordItem]);
 8                 if (specialIndex != (-1)) {
 9                     return false;
10                 }
11             }
12             return true;
13         }
14 
15         function getReValue() {
16 
17             var str = "abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij"
18             var specialWord = new Array("""", "\\", "<", ">", "%", "?", "/", "+", "@", "&", "#", "¥", "……", "^", "~", "!", "‘", "’", "!", "¥"); //可以持续添加特别字符 此 /  字符也不成输入 输出时会破损JSON格局
19             for (var specialWordItem = 0; specialWordItem < specialWord.length; specialWordItem++) {
20                 for (var j = 0; j < str.length; j++) {
21                     if (specialWord[specialWordItem] == str.charAt(j)) {
22                         return false;
23                     }
24                 }
25             }
26             return true;
27         }
28 
29         function bothFunction() {
30             getValue();
31             getReValue();
32         }
33         
34     </script>




str字符串是1000个字符。断定str中是否存在specialWord中的特别字符。机能测试成果如下图所示:



如今可以很明显地看到用indexOf()机能要好很多。


当然getValue()还可以持续优化


View Code

 function getValue(str, specialWord) {

            if ((typeof str == "string") && (specialWord instanceof Array)) {
                var specialIndex = -1,
                    specialWordLength = specialWord.length;

                for (var specialWordItem = specialWordLength - 1; specialWordItem >= 0; specialWordItem--) {
                    specialIndex = str.indexOf(specialWord[specialWordItem]);
                    if (specialIndex > -1) {
                        return false;
                    }
                }
            }
            return true;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值