首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JavaScript遍历数组?

如何使用JavaScript遍历数组?
EN

Stack Overflow用户
提问于 2011-06-02 07:40:41
回答 6查看 23.1K关注 0票数 10

我有一个字符串,其中的数据由竖线字符(|)分隔。

示例

代码语言:javascript
运行
复制
var somestring = "data1|data2|data3";
var separated = somestring.split("|");

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

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

在jQuery或JavaScript中,如何遍历返回的数组?

EN

Stack Overflow用户

回答已采纳

发布于 2011-06-02 07:44:01

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

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

jQuery

$.each loop

这种方法很容易使用,并且其优点在于所使用的变量被封装。

代码语言:javascript
运行
复制
$.each(separated, function(index, chunk) {
    // `chunk` is each member of the array.
});

jsFiddle

当然,jQuery是JavaScript,所以下面的任何一种方法也可以。

JavaScript

for loop

这是推荐的方式。

代码语言:javascript
运行
复制
for (var i = 0, length = separated.length; i < length; i++) {
    var chunk = separated[i];
    // `chunk` is each member of the array.
}

jsFiddle

您还会注意到,length属性被缓存,因此不会在每次迭代中查找它。Some browsers already optimise for this,但是IE似乎仍然从它的缓存中受益。这只需要5秒钟,所以你也可以让IE用户满意。

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

for ( in ) loop

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

代码语言:javascript
运行
复制
for (var chunk in separated) {
     if ( ! separated.hasOwnProperty(chunk)) {
         continue;
     }
     // `separated[chunk]` is each member of the array.   
}

jsFiddle

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

for ( of ) loop

这个循环在ECMA6中是标准化的,并且能够遍历NodeList和迭代器。

代码语言:javascript
运行
复制
for (var chunk of separated) {
     // `chunk` is each member of the array.   
}

jsFiddle

forEach() method

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

代码语言:javascript
运行
复制
separated.forEach(function(chunk, index) {
     // `chunk` is each member of the array.   
});

jsFiddle

其他专门化方法

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

filter method

创建一个元素的新数组,关联的回调为其返回the。

代码语言:javascript
运行
复制
separated.filter(function(element) {
    return +element > 255;
});

reduce method

根据从左到右减少数组的元素来创建新值。

代码语言:javascript
运行
复制
separated.reduce(function(accumulator, element) {
    return accumulator.concat(element);
}, "");

另请参阅reduceRight方法。

map method

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

代码语言:javascript
运行
复制
separated.map(function(element) {
    return element.substr(0, 1);
});

every method

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

代码语言:javascript
运行
复制
separated.every(function(element) {
    return element.substr(0, 1) == "a";
});

some method

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

代码语言:javascript
运行
复制
separated.some(function(element) {
    return element.substr(0, 1) == "a";
});
票数 35
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6208964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档