Javascript没有产生所需的输出

时间:2015-09-15 08:44:01

标签: javascript arrays loops if-statement for-loop

我想在str变量中找到text变量的值,并将事件存储在hits数组中。我已经尝试了很多次,但没有运气让这个程序工作:

/*jshint multistr:true */

text = "tang sit men loop";
var str = "men";
var hits = [];

for( var i = 0; i < text.length; i++ ) {
    if( text[i] === "m") {
        for( var j = i; j < (str.length + 1); j++ ) {
            hits.push( text[i] );
        }
    }
}

if( hits.length === 0 ) {
    console.log( "Not found" );
}
else {
    console.log( hits );
}

3 个答案:

答案 0 :(得分:1)

你的嵌套for循环中有两个错误。请尝试以下方法:

    for( var j = i; j < (i + str.length + 1); j++ ) {
        hits.push( text[j] );
    }

首先,您应该将j < (str.length + 1)更改为j < (i + str.length + 1)。然后,您应该将hits.push( text[i] );更改为hits.push( text[j] );

经过这些更正后,输出如下: m,e,n,

关于这一点,您只需使用JSFiddle来调试代码。

答案 1 :(得分:0)

我可以在此范围内对代码进行改造,但请检查以下条件,了解for( var j = i; j < (str.length + 1); j++ ) {循环 - &gt;这种情况有问题function testingThisOneHere(){ var text = "tang sit men loop"; var str = "men"; var hits = []; alert("text.length"+text.length); alert("str.length"+str.length); for( var i = 0; i < text.length; i++ ) { //alert("condition: "+(text[i] == "m")); //alert("text[i]"+text[i]); if( text[i] == "m") { for( var j = i; j < (str.length + 1); j++ ) { hits.push( text[i] ); } } } if( hits.length != 0 ) { alert( hits ); } else { alert( "Not found" ); } }

{{1}}

答案 2 :(得分:0)

你在内心for循环中遗漏了一件事,ji

  1. 使用hits.push( text[j] );hits.push( text[i] );
  2. JS:

    var text = "tang sit men loop";
    var str = "men";
    var hits = [];
    
    for( var i = 0; i < text.length; i++ ) {
        if( text[i] === "m") {
    
            for( var j = i; j < (str.length + i); j++ ) {
                hits.push( text[j] );
            }
        }
    }
    
    if( hits.length === 0 ) {
        console.log( "Not found" );
    }
    else {
        console.log( hits );
    }
    

    以下是工作示例的链接:http://jsbin.com/gaxenidalo/edit?js,console

    希望有所帮助!