如何使用JavaScript循环遍历数组中的所有条目?
我以为它是这样的:
forEach(instance in theArray)
Run Code Online (Sandbox Code Playgroud)
theArray
我的阵列在哪里,但这似乎是不正确的.
你怎么能用enum
C#枚举一下?
例如,以下代码无法编译:
public enum Suit
{
Spades,
Hearts,
Clubs,
Diamonds
}
public void EnumerateAllSuitsDemoMethod()
{
foreach (Suit suit in Suit)
{
DoSomething(suit);
}
}
Run Code Online (Sandbox Code Playgroud)
并给出以下编译时错误:
'Suit'是'type',但用作'变量'
Suit
关键字失败,第二个关键字失败.
如何访问索引本身以获取如下列表?
ints = [8, 23, 45, 12, 78]
for i in ints:
print('item #{} = {}'.format(???, i))
Run Code Online (Sandbox Code Playgroud)
当我使用循环遍历它时for
,如何访问循环索引,在这种情况下从1到5?
可能重复:
如何有效地迭代"地图"中的每个条目?
迭代一个项目的最佳方法是HashMap
什么?
在Java中,您可以使用for
循环遍历数组中的对象,如下所示:
String[] myStringArray = {"Hello", "World"};
for (String s : myStringArray)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
你能用JavaScript做同样的事吗?
我有一个像以下JavaScript对象:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Run Code Online (Sandbox Code Playgroud)
现在我想通过所有回路p
元素(p1
,p2
,p3
...),并得到他们的键和值.我怎样才能做到这一点?
如有必要,我可以修改JavaScript对象.我的最终目标是遍历一些键值对,如果可能的话,我想避免使用eval
.
var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
// and store them in funcs
funcs[i] = function() {
// each should log its value.
console.log("My value: " + i);
};
}
for (var j = 0; j < 3; j++) {
// and now let's run each one to see
funcs[j]();
}
Run Code Online (Sandbox Code Playgroud)
它输出这个:
我的价值:3
我的价值:3
我的价值:3
而我希望它输出:
我的价值:0
我的价值:1
我的价值:2
使用事件侦听器导致运行函数的延迟时,会出现同样的问题:
var buttons = document.getElementsByTagName("button");
// let's create 3 …
Run Code Online (Sandbox Code Playgroud)我生成了两个1000
x 矩阵1000
:
第一矩阵:O
和#
.
第二个矩阵:O
和B
.
使用以下代码,第一个矩阵需要8.52秒才能完成:
Random r = new Random();
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 1000; j++) {
if(r.nextInt(4) == 0) {
System.out.print("O");
} else {
System.out.print("#");
}
}
System.out.println("");
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,第二个矩阵需要259.152秒才能完成:
Random r = new Random();
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 1000; j++) …
Run Code Online (Sandbox Code Playgroud) 让我通过说我知道它是什么foreach
,做什么以及如何使用它来加上前缀.这个问题涉及它如何在发动机罩下工作,我不希望任何答案都是"这就是你如何循环阵列foreach
".
很长一段时间,我认为这foreach
与数组本身一起工作.然后我发现许多引用它的数据副本的事实,我已经假设这是故事的结尾.但是我最近讨论了这个问题,经过一些实验后发现这实际上并非100%正确.
让我说明我的意思.对于以下测试用例,我们将使用以下数组:
$array = array(1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)
foreach ($array as $item) {
echo "$item\n";
$array[] = $item;
}
print_r($array);
/* Output in loop: 1 2 3 4 5
$array after loop: 1 2 3 4 5 1 2 3 4 5 */
Run Code Online (Sandbox Code Playgroud)
这清楚地表明我们不直接使用源数组 - 否则循环将永远持续,因为我们在循环期间不断地将项目推送到数组.但只是为了确保这种情况:
foreach ($array as $key => $item) {
$array[$key + 1] = $item + 2;
echo "$item\n";
}
print_r($array);
/* Output …
Run Code Online (Sandbox Code Playgroud) loops ×10
javascript ×4
iteration ×3
arrays ×2
c# ×2
for-loop ×2
foreach ×2
java ×2
.net ×1
closures ×1
dictionary ×1
each ×1
enumeration ×1
enums ×1
hashmap ×1
list ×1
performance ×1
php ×1
python ×1
system.out ×1