在Javascript中打破嵌套循环的最佳方法是什么?
//Write the links to the page.
for (var x = 0; x < Args.length; x++)
{
for (var Heading in Navigation.Headings)
{
for (var Item in Navigation.Headings[Heading])
{
if (Args[x] == Navigation.Headings[Heading][Item].Name)
{
document.write("<a href=\""
+ Navigation.Headings[Heading][Item].URL + "\">"
+ Navigation.Headings[Heading][Item].Name + "</a> : ");
break; // <---HERE, I need to break out of two loops.
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在JavaScript中有一个对象:
{
abc: '...',
bca: '...',
zzz: '...',
xxx: '...',
ccc: '...',
// ...
}
Run Code Online (Sandbox Code Playgroud)
我想使用for循环来获取其属性.我想在部分中迭代它(不是一次所有的对象属性).
使用简单的数组我可以使用标准for循环:
for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last
Run Code Online (Sandbox Code Playgroud)
但是如何用物体做呢?
对于它的所有瑕疵,PHP在这方面非常好.数组和哈希之间没有区别(也许我很天真,但这对我来说显然是正确的),并且要么迭代你要么做
foreach (array/hash as $key => $value)
Run Code Online (Sandbox Code Playgroud)
在Ruby中有很多方法可以做这种事情:
array.length.times do |i|
end
array.each
array.each_index
for i in array
Run Code Online (Sandbox Code Playgroud)
哈希更有意义,因为我总是使用
hash.each do |key, value|
Run Code Online (Sandbox Code Playgroud)
为什么我不能为数组做这个?如果我只想记住一种方法,我想我可以使用each_index(因为它使索引和值都可用),但是不得不这样做array[index]而烦人value.
哦,对,我忘记了array.each_with_index.然而,这一次吮吸,因为它去|value, key|和hash.each去|key, value|!这不是疯了吗?
在Ruby中,如何在循环中跳过.each循环,类似于continue其他语言?
我已经看了十多年了.我一直在努力思考它有什么好处.因为我主要在#defines中看到它,所以我认为它对内部范围变量声明和使用中断(而不是gotos)有好处.
对其他事情有好处吗?你用它吗?
我想在while循环中添加延迟/睡眠:
我试过这样的:
alert('hi');
for(var start = 1; start < 10; start++) {
setTimeout(function () {
alert('hello');
}, 3000);
}
Run Code Online (Sandbox Code Playgroud)
只有第一种情况是真的:显示后alert('hi'),它将等待3秒然后alert('hello')将显示,但随后alert('hello')将反复不断.
我想要的是,在alert('hello')3秒之后显示alert('hi')之后,它需要等待第二次3秒alert('hello'),依此类推.
我一直想知道,一般来说,在循环之前声明一个抛弃变量,而不是在循环内部重复,是否会产生任何(性能)差异?Java中的一个(毫无意义的)示例:
a)循环前的声明:
double intermediateResult;
for(int i=0; i < 1000; i++){
intermediateResult = i;
System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)
b)声明(重复)内循环:
for(int i=0; i < 1000; i++){
double intermediateResult = i;
System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)
哪一个更好,一个还是b?
我怀疑重复变量声明(例子b)在理论上会产生更多的开销,但是编译器足够聪明,所以它并不重要.实施例b具有更紧凑的优点,并且将变量的范围限制在其使用的位置.尽管如此,我倾向于根据示例来编码一个.
编辑:我对Java案件特别感兴趣.
在Perl中,我可以使用next;命令跳过foreach(或任何循环)迭代.
有没有办法跳过迭代并跳转到C#中的下一个循环?
foreach (int number in numbers)
{
if (number < 0)
{
// What goes here to skip over the loop?
}
// otherwise process number
}
Run Code Online (Sandbox Code Playgroud) 我试图break在for循环中使用一个语句,但由于我在Perl代码中也使用严格的subs,我收到一个错误说:
在./final.pl第154行使用"严格潜艇"时不允许使用Bareword"break".
有没有解决方法(除了禁用严格的潜艇)?
我的代码格式如下:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
Run Code Online (Sandbox Code Playgroud) 如何std::map在C++中循环?我的地图定义为:
std::map< std::string, std::map<std::string, std::string> >
Run Code Online (Sandbox Code Playgroud)
例如,上面的容器包含如下数据:
m["name1"]["value1"] = "data1";
m["name1"]["value2"] = "data2";
m["name2"]["value1"] = "data1";
m["name2"]["value2"] = "data2";
m["name3"]["value1"] = "data1";
m["name3"]["value2"] = "data2";
Run Code Online (Sandbox Code Playgroud)
如何遍历此地图并访问各种值?