【问题标题】:Javascript not producing the output requiredJavascript没有产生所需的输出
【发布时间】:2015-09-15 08:44:01
【问题描述】:

我想在text 变量中找到str 变量的值,并将出现的情况存储在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 );
}

【问题讨论】:

  • 我们不能仅仅理解您的意思 - 请解释您到底想要什么。 (即使代码在那里,上下文也不存在,这在尝试提供帮助时很重要。)
  • 真的,在这种情况下需要什么输出?您是在检查整个字符串('men')还是分隔字母('m')?!
  • for( var j = i; j &lt; (str.length + 1); j++ ) 如果j = i 那么在你的情况下,它比str.length + 1 大,尝试使用for( var j = 0; j &lt; str.length; j++ ) {hits.push( text[i + j] )}
  • 只需尝试在文本数组中搜索 str ,然后将其添加到 hits 数组中。最后想把它打印到控制台。如果有帮助
  • 预期的输出是什么,一个字符数组,一个字符串?还有什么?

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


【解决方案1】:

您的嵌套 for 循环中有两个错误。请尝试以下操作:

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

首先,您应该将j &lt; (str.length + 1) 更改为j &lt; (i + str.length + 1)。那你应该把hits.push( text[i] );改成hits.push( text[j] );

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

值得一提的是,您可以简单地使用JSFiddle 来调试您的代码。

【讨论】:

    【解决方案2】:

    我可以将代码改成这个扩展,但请检查for 循环的以下条件--> 此条件错误for( var j = i; j &lt; (str.length + 1); j++ ) {

    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" );
    }
    }
    

    【讨论】:

      【解决方案3】:

      你只是在你的内部 for 循环中遗漏了一件事,ji

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

      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

      希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多