如何使用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 )循环

该循环在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方法

创建相关回调函数返回的元素的一个mew数组。

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 .length。


str.split()返回值的数组,所以在你的例子中,因为'separated'是一个数组,所以你可以:

for (var i=0, len=separated.length; i < len; i++) {
   // do something with separated[i]
}
链接地址: http://www.djcxy.com/p/69999.html

上一篇: How to loop over an Array with JavaScript?

下一篇: How can I show all the localStorage saved variables?