在Java中,可以使用for循环遍历数组中的对象,如下所示:
String[] myStringArray = {"Hello", "World"};
for (String s : myStringArray) {
// Do something
}
我可以在JavaScript中做同样的事情吗?
在Java中,可以使用for循环遍历数组中的对象,如下所示:
String[] myStringArray = {"Hello", "World"};
for (String s : myStringArray) {
// Do something
}
我可以在JavaScript中做同样的事情吗?
当前回答
您可以使用map,这是一种函数式编程技术,也可以在Python和Haskell等其他语言中使用。
[1,2,3,4].map( function(item) {
alert(item);
})
一般语法为:
array.map(func)
一般来说,func需要一个参数,这是数组的一个项。但在JavaScript的情况下,它可以接受第二个参数,即项目的索引,以及第三个参数,也就是数组本身。
array.map的返回值是另一个数组,因此可以这样使用:
var x = [1,2,3,4].map( function(item) {return item * 10;});
现在x是[10,20,30,40]。
您不必内联编写函数。它可能是一个单独的功能。
var item_processor = function(item) {
// Do something complicated to an item
}
new_list = my_list.map(item_processor);
这相当于:
for (item in my_list) {item_processor(item);}
除非你没有得到new_list。
其他回答
有几种方法可以在JavaScript中实现。前两个示例是JavaScript示例。第三个使用JavaScript库,即jQuery使用.each()函数。
var myStringArray=[“hello”,“World”];for(myStringArray中的var i){alert(myStringArray[i]);}
var myStringArray=[“hello”,“World”];for(var i=0;i<myStringArray.length;i++){alert(myStringArray[i]);}
var myStringArray=[“hello”,“World”];$.each(myStringArray,函数(索引,值){警报(值);})<script src=“https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js“></script>
var obj = ["one","two","three"];
for(x in obj){
console.log(obj[x]);
}
您可以使用map,这是一种函数式编程技术,也可以在Python和Haskell等其他语言中使用。
[1,2,3,4].map( function(item) {
alert(item);
})
一般语法为:
array.map(func)
一般来说,func需要一个参数,这是数组的一个项。但在JavaScript的情况下,它可以接受第二个参数,即项目的索引,以及第三个参数,也就是数组本身。
array.map的返回值是另一个数组,因此可以这样使用:
var x = [1,2,3,4].map( function(item) {return item * 10;});
现在x是[10,20,30,40]。
您不必内联编写函数。它可能是一个单独的功能。
var item_processor = function(item) {
// Do something complicated to an item
}
new_list = my_list.map(item_processor);
这相当于:
for (item in my_list) {item_processor(item);}
除非你没有得到new_list。
JavaScript中的数组遍历作弊表
给定一个数组,可以通过以下多种方式之一遍历它。
1.经典for loop
const myArray=['Hello','World'];for(设i=0;i<myArray.length;i++){console.log(myArray[i]);}
2.用于。。。属于
const myArray=['Hello','World'];for(myArray的常量项){console.log(项);}
3.Array.prototype.forEach()
const myArray=['Hello','World'];myArray.forEach(项=>{console.log(项);});
4.while循环
const myArray=['Hello','World'];设i=0;while(i<myArray.length){console.log(myArray[i]);i++;}
5.do…while循环
const myArray=['Hello','World'];设i=0;做{console.log(myArray[i]);i++;}而(i<myArray.length);
6.队列样式
const myArray=['Hello','World'];while(myArray.length){console.log(myArray.shift());}
7.堆栈样式
注:该列表在本页中以相反的方式打印。const myArray=['Hello','World'];while(myArray.length){console.log(myArray.pop());}
如果有人对Array迭代可用的多种机制的性能方面感兴趣,我准备了以下JSPerf测试:
https://jsperf.com/fastest-array-iterator
结果:
传统的for()迭代器是迄今为止最快的方法,尤其是在缓存数组长度时。
let arr = [1,2,3,4,5];
for(let i=0, size=arr.length; i<size; i++){
// Do something
}
Array.prototype.forEach()和Array.prototype.map()方法是最慢的近似方法,可能是函数调用开销的结果。