JS打破嵌套for循环

时间:2016-09-11 02:57:48

标签: javascript loops

为以下算法问题编写代码,不知道为什么它不起作用。在调试器之后,我发现elem变量永远不会超过's'。我担心这可能是因为我理解如何打破父循环。我读 这个问题:Best way to break from nested loops in Javascript?但我不确定我是否做错了。

dy

3 个答案:

答案 0 :(得分:1)

我的建议是使用单个for循环而不是使用两个循环。

for( var i = 0; i<s.length - 1;i++) {
    var lastIndex = s.lastIndexOf(s[i]);
    if ( lastIndex == i) {
       return s[i];
    }
}

答案 1 :(得分:1)

试试这个。

这是我的代码的关键

begin()

查看完整代码

if( f!=true)
return s[i];

答案 2 :(得分:0)

我认为你正确地打破了循环,函数总是返回s的原因是因为计数器i从不递增。

让我们来看看代码

i = 0, element = 's', j = 1, s[j] = 't', which is not equal to 's'
j++, j = 2, s[j] = 'r', not equal to 's'
j++, j = 3, s[j] = 'e', not equal to 's' 
j++, j = 4, s[j] = 's', equal to 's'

所以你打破了孩子循环。

现在,当return s[i]时,我们点击i = 0行,所以函数自然会返回s

如果您更改return s[i]以包含if语句,就像这样

if(j == s.length) { 
    return s[i];
}

该函数现在返回't'。您正在检查子循环是否已完全运行,这意味着break child_loop;从未运行,并且您有一个唯一的字母。