如何使用JavaScript在数组上循环?

如何使用JavaScript在数组上循环?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个字符串,其数据由管道字符(|)分隔 例子 我知道如何使用split()分隔每个数据 但是,我不知道在生成的数组中会有多少管道 在jQuery或JavaScript中,如何循环返回的数组?分隔。长度应该是您所需要的全部 在jQuery或JavaScript中,如何循环遍历每个分离的变量 基本上,您只需迭代生成的数组 jQuery 这种方法很容易使用,并且有利于封装所使用的变量 $.each(separated, function(index, chunk) { // `chunk`

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

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

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


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

分隔。长度应该是您所需要的全部

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

基本上,您只需迭代生成的
数组

jQuery 这种方法很容易使用,并且有利于封装所使用的变量

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

当然,jQuery是JavaScript,所以下面的任何方法都可以使用

JavaScript 这是推荐的方法

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

此循环将循环原型链上的所有属性,因此必须使用
hasOwnProperty()
。因此,不建议将其用于阵列

这个循环在ECMA 6中是标准化的,能够在
NodeList
s和迭代器上循环

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

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

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

其他专门方法 如果您希望针对特定目标进行迭代,那么使用专门的迭代器可能会很有用。请记住,它们也没有最好的浏览器支持

创建关联回调为其返回的元素的mew数组

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

separated.reduce(function(accumulator, element) {
    return accumulator.concat(element);
}, "");
另见方法

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

separated.map(function(element) {
    return element.substr(0, 1);
});
返回一个布尔值,该值是数组中通过测试的每个元素的结果。这个方法会短路,即当一个元素的回调没有返回truthy时,它就会返回

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

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

如果您的问题真的是“如何循环每个分离的变量?”那么:

for(变量i=0;i
您可以在jquery中这样做

$.each(separated,function(key,item){ alert('here is ' + item + ' at position ' + key) })
str.split()返回一个值数组,因此在您的示例中,由于“separated”是一个数组,您可以:

for (var i=0, len=separated.length; i < len; i++) {
   // do something with separated[i]
}
for(变量i=0,len=separated.length;i
像大多数其他语言一样,使用FOR…NEXT构造循环:

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

for (i=0 ; i<separated.length; i++) {
 document.write(separated[i]);
 document.write("<br/>");
}
var somestring=“data1 | data2 | data3”;
var separated=somestring.split(“|”);

for(i=0;ifor(数组中的变量a)已弃用,不应使用。我没有意识到,我正在考虑我通常如何在C#中使用它。我将编辑我的答案。@Rob it未弃用,它只是不是迭代
数组的最佳循环。
@Alex,in的最佳实践状态是用于迭代对象的属性,而不是数组的元素。请参阅@Rob true,但它在任何地方都不会被弃用,是吗?5分钟前被问到,已经有7个答案了,我有时喜欢堆栈溢出…+1对于javascript
for
循环的教育,我今天学到了两个新东西,甚至还没到午餐时间耶,alex!完美答案!+1
separated.some(function(element) {
    return element.substr(0, 1) == "a";
});
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
}
$.each(separated,function(key,item){ alert('here is ' + item + ' at position ' + key) })
for (var i=0, len=separated.length; i < len; i++) {
   // do something with separated[i]
}
var somestring = "data1|data2|data3";
var separated = somestring.split("|");

for (i=0 ; i<separated.length; i++) {
 document.write(separated[i]);
 document.write("<br/>");
}