【发布时间】:2013-11-26 23:19:41
【问题描述】:
为什么我必须将i 解析为一个数字和一个变量,这样我才能让str.charAt(i+1) 工作,而str.charAt(i-1) 工作得很好?
这是针对 coderbyte“简单符号”的,我花了两个小时才弄清楚 i 有时是字符串,有时是数字
function SimpleSymbols(str) {
// code goes here
var letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var letterArray=letters.split('');
var strArray=str.split('');
var truth=false;
for (var i in strArray){
var e=parseFloat(i)+1;
if (letterArray.indexOf(strArray[i]) > -1){
if ((str.charAt(i-1)==='+')&&(str.charAt(e)==='+')){
truth = true;
}
}
}
return truth;
}
// keep this function call here
// to see how to enter arguments in JavaScript scroll down
SimpleSymbols(readline());
【问题讨论】:
-
因为
i是一个字符。if (letterArray.indexOf(i) > -1){ -
但是为什么 str.charAt(i-1) 有效而 str.charAt(i+1) 无效。
-
巧合?毫无疑问,由于您正在执行 for in 循环,所以 i 是一个角色。
-
不要使用
for ... in进行 JavaScript 数组遍历。 -
“我假设 i 是一个数字,因为 i 是数组的索引” 由于您使用的是
for...in,因此您正在迭代 属性名称 的对象,它总是字符串。另请注意,如果您引用变量 i 并使用人称代词 i,您的文本真的很难阅读。在英语中,如果是人称代词,则必须大写 I。
标签: javascript