在javascript中执行for循环失败

时间:2015-07-08 06:38:41

标签: javascript json

我在一些Javascript代码中有一个for循环,似乎无法弄清楚为什么它没有执行。我有一些console.log语句,我试图看看变量是否正在捕获我需要它们。但是,当我运行代码时,我看不到来自console.log命令的任何输出。这里有什么我想念的吗?请参阅下面的Javascript代码:

var strArry = [];  

for(var i=0; i<obj[0].srcLanguageSentence.text; i++)
{

    // create variables representing substrings of the Source language Sentence
    var s1 = text.substring((obj[i].srcLanguageSentence.roles[i].beginOffset - obj[i].srcLanguageSentence.roles[i].beginOffset),(obj[i].srcLanguageSentence.roles[i].beginOffset - 1));
    var s2 = text.substring(obj[i].srcLanguageSentence.roles[i].beginOffset,obj[i].srcLanguageSentence.roles[i].endOffset);
    var s3 = text.substring(obj[i].srcLanguageSentence.roles[i].endOffset,obj[i].srcLanguageSentence.text.length);

    strArry.push(s1)
    strArry.push(s2)

    if(i == obj[0].srcLanguageSentence.roles.length)
    {
        strArry.push(s3);
    }

    text =  s3;

 console.log("s1: " + s1);
 console.log("s2: " + s2);
 console.log("s3: " + s3);
 console.log(s1+s2+s3);
}

3 个答案:

答案 0 :(得分:1)

您的问题是for循环中的条件语句:

i < obj[0].srcLanguageSentence.text;

你说这个循环应该运行只要 i 小于 obj [0] .srcLanguageSentence.text ,这看起来是错误的。

我想你要么为obj中的每个对象运行for循环(当你在代码中使用 obj [i] 时)?如果是这样,请将其写成:

for (var i=0; i < obj.length; i++)

或者,如果是文本的长度:

for (var i=0; i < obj[0].srcLanguageSentence.text.length; i++)

答案 1 :(得分:1)

对于不完整的代码段,几乎没有任何详细的建议,尽管看起来问题与您的条件语句有关。您可能想要尝试的一般方法,不仅针对此特定情况,还针对其他情况,还要添加更多console.log来识别问题,假设您不想使用chrome调试器。例如,

var strArry = [];  

console.log(obj[0].srcLanguageSentence.text);
for(var i=0; i<obj[0].srcLanguageSentence.text; i++)
{
   console.log("enter:"+i);
    // create variables representing substrings of the Source language Sentence
    var s1 = text.substring((obj[i].srcLanguageSentence.roles[i].beginOffset - obj[i].srcLanguageSentence.roles[i].beginOffset),(obj[i].srcLanguageSentence.roles[i].beginOffset - 1));
  console.log('s1:'+s1);
    var s2 = text.substring(obj[i].srcLanguageSentence.roles[i].beginOffset,obj[i].srcLanguageSentence.roles[i].endOffset);
    var s3 = text.substring(obj[i].srcLanguageSentence.roles[i].endOffset,obj[i].srcLanguageSentence.text.length);

    strArry.push(s1)
    strArry.push(s2)

    if(i == obj[0].srcLanguageSentence.roles.length)
    {
        strArry.push(s3);
    }

    text =  s3;

 console.log("s1: " + s1);
 console.log("s2: " + s2);
 console.log("s3: " + s3);
 console.log(s1+s2+s3);
}
希望它有所帮助。

答案 2 :(得分:0)

由于你的陈述

,你的循环不成功
for(var i=0; i<obj[0].srcLanguageSentence.text; i++)

这里的for loop你需要在数字形式中放入一个条件而不是字符串或文本形式。因此,在循环语句中替换条件,绝对会在循环中获得成功。