我在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中完成某些事情)。
答案 0 :(得分:14)
首先,
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。
答案 1 :(得分:8)
使用jQuery.each你可以写一些类似于(未测试)的东西:
jQuery.each(array, function(k,v) {
console.log("K: "+,k," V:",v);
});
答案 2 :(得分:1)
看看underscorejs.org - 用它这样做:
_.each(array, function(element, index, array) {
doSomething(item, index);
});
它由backbonejs和许多其他框架/库使用,例如meteor,例如它有80个左右非常有用的功能 - 如果你认真对待javascript,花30分钟阅读整个下划线页面,你将永远不想用javascript编写任何代码。
答案 3 :(得分:1)
for (x in array){
var arrayItem = array[x]
}
这种类型的for循环确实有效,但是给出数组位置而不是数组本身的项目。它非常简洁,我一直都在使用它
答案 4 :(得分:0)
如果订单不是优先级(或者即使它是,你总是可以反转数组),这是我的首选方法:
var i = array.length;
while(i--) {
console.log("key is " + i + " and value is " + array[i]);
}
此方法有效,因为数字0
在JavaScript中评估为false
。
答案 5 :(得分:0)
这种任务不需要jQuery,它可以只使用 for循环,这是在JS中循环数组的可取方法。您可以阅读此link text了解更多详细信息