简体   繁体   English

有人可以帮我找到一个更好的替代这个Javascript for循环我写的吗?

[英]Can someone help me find a better alternative to this Javascript for loop I've written?

Thanks in advance to anyone who can think of a more efficient or a better way to do what my Javascript code below does: 在此之前,感谢能够更有效或更好地完成我的Javascript代码操作的人:

var availableCharacters=Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");

for (counter=0; counter<availableCharacters.length; counter++){
  if(availableCharacters[counter]=="i"||
     availableCharacters[counter]=="l"||
     availableCharacters[counter]=="I"||
     availableCharacters[counter]=="L"||
     availableCharacters[counter]=="1"||
     availableCharacters[counter]=="0"||
     availableCharacters[counter]=="O"){
      availableCharacters.splice(counter, 1);
    }
}

What I'm trying to do is run through an array and remove any elements in that array that are "i", "l", "I", "L", "1", "0" or "O". 我要做的是运行一个数组并删除该数组中“i”,“l”,“I”,“L”,“1”,“0”或“O”的所有元素。 Whilst this does work it seems like it might be slow and a bit cumbersome. 虽然这确实有效,但似乎它可能很慢而且有点麻烦。 If there is a better way? 如果有更好的方法? If not then not a problem, but most of the time when I do something that doesnt seem right to me, it's not! 如果不是那么不是问题,但大多数时候,当我做一些对我来说不合适的事情时,事实并非如此! So I thought I'd ask SO 所以我想我会问

Thanks :) 谢谢 :)

More recent browsers support Array.filter : 更新的浏览器支持Array.filter

var availableCharacters = ........;
availableCharacters = availableCharacters.filter(function(a) {
  return !a.match(/[ilLI10O]/);
});

For older browsers, however, the for loop given by Mark Linus is good. 然而,对于较旧的浏览器,Mark Linus给出的for循环是好的。

var availableCharacters=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
for (counter=0; counter<availableCharacters.length; counter++){
    if(/[ilIL10O]/.test(availableCharacters[counter])){
        availableCharacters.splice(counter, 1);
    }
}

Alternative solution with simple filter list: 带有简单过滤列表的替代解决方

var availableCharacters=Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3",     "4", "5", "6", "7", "8", "9");
var filter = ['i', 'l', 'I', 'L', '1', '0', 'O'];
for (counter=0; counter<availableCharacters.length; counter++){
    if(filter.indexOf(availableCharacters[counter]) >= 0) {
        availableCharacters.splice(counter, 1);
    }
}

If you're willing to use jQuery you can use grep() and write it like this: 如果你愿意使用jQuery,你可以使用grep()并像这样写:

Fiddle here 在这里小提琴

var availableChars = ["a", "b", "c", '1', 'i', 'o', "9"];
var result = $.grep(availableChars, function(c) {
    return !c.match(/[^il10o]/i)
})
document.write(result)​

filter is nice, but a simple string replace works without a net- 过滤器很好,但一个简单的字符串替换工作没有网络 -

   var availableCharacters=["a", "b", "c", "d", "e", "f", "g", "h", "i", 
   "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", 
   "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];

  var allowed= availableCharacters.join('').replace(/[iLl10O]/g,'').split('');

  returned value: (Array)
  a,b,c,d,e,f,g,h,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,2,3,4,5,6,7,8,9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 有人可以帮我找到使用javascript的正则表达式 - Can someone help me to find the regular expression for this using javascript 有人可以帮我将这个用C#编写的正则表达式转换为javascript吗? - Can someone help me to convert this regex expression written in C# to javascript? 有人能帮我理解这段 JavaScript 代码吗 - Can someone help me understand this JavaScript code 有人可以帮助我了解 javascript 吗? - can someone help me about javascript? 有人可以帮我在 javascript 中写这个吗 - Can someone help me write this in javascript 有人可以帮助我以更好的方式在WebForms中保存图像吗? - Can someone help me with a better way to save images in WebForms? 有人可以帮助我更好地理解跨站点脚本策略 - Can someone help me better understand Cross Site Scripting Policy 我已获得解构任务,有人可以帮助我了解如何解构嵌套在数组[]中的对象{}吗? - I've been given an assignment on destructuring, can someone help me understand how to destructure object { } nested within an array [ ]? 我在查找此textarea值是iframe还是简单文本时遇到问题。 有人能帮我吗? - I'm facing an issue to find if this textarea value is iframe or simple text. Can someone help me? 有人可以帮我解决我的前端脚本问题吗? 我需要知道这是否是编写此脚本的唯一方法,或者是否有更好的方法 - Can someone help me with my frontend script issue? I need to know if this is the only way to code this script or if there are better ways
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM