在js中供给了indexOf()函数以获取某个字符在字符串中的index,可以经由过程它也断定某个字符或字符串是否存在。
但同时在js中for轮回也可以实现同样的结果(断定字符是否存在)。那么到底用哪个才好呢?
于是写了两个函数来斗劲:


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()还可以持续优化


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; }