var text = "Hue, bla, hue, rhr, aek kmggg mlsd k Bjarni sdkrals fn lol Bjarni\
lelelele Bjarni";
var myName = "Bjarni";
var hits = [];
for(var i = 0; i < text.length; i++); {
if (text[i] === "B"); {
for(var j = i; j < (myName.length+i); j++) {
hits.push(text[j]);
}
}
}
console.log(hits);
这应该返回我的名字,但它只返回一个包含几个undefined
值的数组。
答案 0 :(得分:2)
问题在于:
if (text[i] === "B"); {
摆脱分号。代码那一点的分号就像是:
if (text[i] === "B")
; // DO NOTHING AT ALL
{ // START A BLOCK
for(var j = i; j < (myName.length+i); j++) {
hits.push(text[j]);
}
}
编辑 - 哦,在for
循环标题之后还有另一个(具有类似效果)。它应该是:
for(var i = 0; i < text.length; i++) {
答案 1 :(得分:0)
你只是有一些语法错误和一个缺少的break语句来修复。这应该有效:
var text = "Hue, bla, hue, rhr, aek kmggg mlsd k Bjarni sdkrals fn lol Bjarni\ lelelele Bjarni";
var myName = "Bjarni";
var hits = [];
for(var i = 0; i < text.length; i++) {
if (text[i] === "B") {
for(var j = i; j < (myName.length+i); j++) {
hits.push(text[j]);
}
break;
}
}
console.log(hits);
澄清;你在第if( text[i] === "B");
行之后有一个分号,在你的第一个for loop
后面有另一个分号而你错过了一个break
语句,所以它会在整个“文本”字符串中循环,这可能是也可能不是无意的行为。