在Javascript中遍历数组元素

10

我有一个Javascript数组:

var array = new array();
array[0] = "apples";
array[1] = "oranges";
array[2] = "pears";

在PHP中,对于给定的数组,我可以使用以下代码循环遍历数组,并分离键和值:
foreach ($array as $key => $value) {
    echo("Key is $key and Value is $value");
}

我应该如何使用Javascript实现这个功能?我知道有以下方法:

for (x in array){
    // Do something with x.
}

但我没有找到任何能够复制php风格foreach的东西。在JavaScript中是否可能简洁地实现类似的功能?(如果可以在jQuery中完成,则我也使用jQuery)。

6个回答

15

首先,

var array=[];

使用“new”不如使用“[]”。

其次,在这种情况下,你的键是数字,所以你只需要:

for (i=0;i<array.length;i++) {
  console.log("Key is "+i+" and Value is "+array[i]);
}

如果你想要使用非数字的键,可以使用JavaScript对象而不是数组。虽然在数组索引中使用字符串而不是数字是有效的,但是JavaScript对此的支持有限。


我使用“console.log”,因为我假设你不希望弹出大量警报。console.log可以替换为任何你用来记录信息的工具,你可以使用alert()或将文本写入div中。


3
你应该加上console.log需要Firefox和Firebug才能使用。 - ichiban
@ichiban。好的观点。我编辑了我的答案来提到这一点。 - Nosredna
答案是使用JavaScript对象 - 因为似乎我需要比标准数组更灵活的东西。(我的数组是动态生成的,并且包含非数字值)。感谢您的回答。 - EvilChookie
还有,谢谢关于新数组声明的信息。我会记住的。 - EvilChookie
@ichiban:有人问JS问题不知道console.log是什么吗?console.log在Chrome和IE中也可以使用,需要使用开发者工具。 - Ruan Mendes
显示剩余4条评论

10

使用jQuery.each,你可以编写类似于以下代码的内容(未经过测试):

jQuery.each(array, function(k,v) {
    console.log("K: "+,k," V:",v);
});

除非使用jQuery... - Sasha Chedygov
7
好的,请提供需要翻译的内容。 - SilentGhost

2
for (x in array){

     var arrayItem = array[x]

}

这种for循环确实可以工作,但返回的是数组索引而不是数组中的元素。它非常简洁,我经常使用它。


2

请查看underscorejs.org - 使用它,您可以这样做:

_.each(array, function(element, index, array) {
    doSomething(item, index);
});

Underscore是由backbonejs和许多其他框架/库(如meteor)使用的工具。它有80多个非常有用的函数 - 如果你认真对待javascript,花30分钟阅读整个underscore页面,你将永远不想在任何其他语言中编写代码。


0
如果顺序不是优先考虑的问题(或者即使是,你也可以反转数组),这是我首选的方法:
var i = array.length;
while(i--) {
  console.log("key is " + i + " and value is " + array[i]);
}

这种方法有效是因为在JavaScript中,数字0被评估为false

0

这种任务不需要使用jQuery,只需使用for循环即可。这是在JS中循环遍历数组的推荐方式。您可以阅读链接文本以获取更详细的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接