如何使用JavaScript循环数组?

我有一个字符串,其数据由管道符( | )分隔。

 var somestring = "data1|data2|data3"; var separated = somestring.split("|"); 

我知道如何使用split()来分隔每个数据。

但是,我不知道生成的Array中将有多少个管道。

在jQuery或JavaScript中,如何循环返回的数组?

在jQuery或JavaScript中,如何遍历每个分离的变量?

您基本上只需要迭代生成的Array

jQuery的

$.each循环

该方法易于使用,并且在封装的变量中有益。

 $.each(separated, function(index, chunk) { // `chunk` is each member of the array. }); 

jsFiddle 。

当然,jQuery JavaScript,因此下面的任何方法都可以使用。

JavaScript的

for循环

这是推荐的方式。

 for (var i = 0, length = separated.length; i < length; i++) { var chunk = separated[i]; // `chunk` is each member of the array. } 

jsFiddle 。

您还会注意到length属性被缓存,因此在每次迭代时都不会查找它。 一些浏览器已经针对此进行了优化 ,但IE似乎仍然可以从缓存中受益。 它只需要5秒钟,所以你也可以保持IE用户的快乐。

您可能希望在for循环之外定义ichunk ,因为JavaScript没有块作用域(除非您使用let ),并且这些变量将存在于(声明提升)之后和之后(无块作用域)。

for ( in )循环

通常不推荐使用此循环,因为它应该仅用于迭代对象属性,而不是像成员属性那样的数组。

 for (var chunk in separated) { if ( ! separated.hasOwnProperty(chunk)) { continue; } // `separated[chunk]` is each member of the array. } 

jsFiddle 。

这个循环将循环遍历原型链的所有属性,因此必须使用hasOwnProperty() 。 因此,建议不要使用数组。

for ( of ) loop

此循环在ECMA 6中标准化,并且能够循环遍历NodeList和迭代器。

 for (var chunk of separated) { // `chunk` is each member of the array. } 

的jsfiddle

forEach()方法

该方法是ECMA-262标准的补充。 它在IE8中不可用,但它可以相对容易地填充 。

 separated.forEach(function(chunk, index) { // `chunk` is each member of the array. }); 

jsFiddle 。

其他专业方法

如果您希望迭代特定目标,使用专门的迭代器可能会很有用。 请记住,这些也没有最好的浏览器支持。

filter方法

创建一个新的元素数组,相关的回调返回truthy

 separated.filter(function(element) { return +element > 255; }); 

reduce方法

基于从左到右减少数组元素创建新值。

 separated.reduce(function(accumulator, element) { return accumulator.concat(element); }, ""); 

另请参见reduceRight方法。

map方法

创建一个新数组,用相关回调的返回值替换每个元素。

 separated.map(function(element) { return element.substr(0, 1); }); 

every方法

返回一个布尔值,该值是传递测试的数组中每个元素的结果。 这种方法短路,即只要一个元素的回调没有返回值,它就会返回。

 separated.every(function(element) { return element.substr(0, 1) == "a"; }); 

some方法

返回一个布尔值,该值是传递测试的数组中某个元素的结果。 此方法短路,即只要一个元素的回调通过测试,它就会返回。

 separated.some(function(element) { return element.substr(0, 1) == "a"; }); 

separated.length应该是你所需要的。

str.split()返回一个值数组,因此在您的示例中,由于’separated’是一个数组,您可以:

 for (var i=0, len=separated.length; i < len; i++) { // do something with separated[i] } 

你可以在这样的jquery中做到这一点

 $.each(separated,function(key,item){ alert('here is ' + item + ' at position ' + key) }) 

如果您的问题确实是“我如何遍历每个分离的变量?” 然后:

 for (var i = 0; i < separated.length; i++) { //Do something with separated[i]; } //or (apparently this is deprecated) for(var a in separated) { //Do something with a } 

像大多数其他语言一样使用FOR … NEXT结构循环:

 var somestring = "data1|data2|data3"; var separated = somestring.split("|"); for (i=0 ; i"); }