为以下算法问题编写代码,不知道为什么它不起作用。在调试器之后,我发现elem变量永远不会超过's'。我担心这可能是因为我理解如何打破父循环。我读 这个问题:Best way to break from nested loops in Javascript?但我不确定我是否做错了。
dy
答案 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;
从未运行,并且您有一个唯一的字母。