代码找不到我的名字

时间:2013-12-03 00:01:00

标签: javascript

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值的数组。

2 个答案:

答案 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语句,所以它会在整个“文本”字符串中循环,这可能是也可能不是无意的行为。