奇怪的JavaScript代码
Weird JavaScript Code
本文关键字:代码 JavaScript 更新时间:2023-09-26
for (var i=a.length-1;i>0;i--) {
if (i!=a.indexOf(a.charAt(i))) {
a=a.substring(0,i)+a.substring(i+1);
}
}
我在一个正在审核的网络应用程序中发现了这个,它让我很困惑为什么会在那里。我似乎看不出i!=a.indexOf(a.charAt(i))
为假的情况。
传递给它的值是:
a = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
也没有任何评论//叹息
对于重复的字符来说,这是正确的,因为indexOf
会找到字符串的第一个索引,并且您是从末尾开始搜索的。示例:
var a = "xyzxyz";
在第一次迭代中,i === 4
、a.charAt(4) === "x"
和a.indexOf("x") === 0
。所以4 !== 0
。
然后设置CCD_ 7。在substring
处调用在第一个索引中包含,但在最后一个索引中排除,这意味着在本例中为a = "xyz" + "yz"
,因此我们从字符串中删除了重复的"x"
。
由于循环向后遍历,即使对于重复多次的字符,这也将继续有效;您可以看到部分a.substring(i + 1)
将始终被算法覆盖,即不包含任何重复。
和往常一样,当遇到这种类型的事情时,应用提取方法重构将是使代码更清晰的好方法。(甚至比注释它更好!(所以,如果你把它拉到一个方法中,代码可能会变成a = removeDuplicateChars(a)
,每个人都会更高兴。
相关文章:
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 简化此If语句,使其不会't重复代码-Javascript
- 十进制到二进制代码Javascript
- 第二次单击时执行不同的代码(JavaScript)
- 在不使用jquery($symbol)knockout.js的情况下分离代码javascript
- 缩短几个元素的onclick代码 - JavaScript
- 英国银行排序代码 JavaScript 正则表达式
- 我无法在谷歌图表的代码 javascript 中获取 json 数据(项目 Python Hello Dashboard
- 和代码 JavaScript 没有被 &.
- 我怎样才能减少这段代码 javascript 代码,这样它就不会那么重复了
- 我想单击一个按钮,一次只执行已经制作的程序中的一行代码.(JavaScript)
- 滑动 DIV 代码 Javascript 的小问题
- 尝试重写代码 JavaScript
- 是否可以检测到在不使用键代码 javascript 的情况下按下了输入键
- 输入网址代码 JavaScript 播放器
- 管理通用客户端代码(javascript/css)
- 理解代码javascript
- 加载json-url参数代码(javascript修改)
- 变量检查错误的代码(javascript)
- css属性仅由代码javascript应用