Javascript 如何在jQuery中循环遍历数组?

Javascript 如何在jQuery中循环遍历数组?,javascript,jquery,arrays,loops,iteration,Javascript,Jquery,Arrays,Loops,Iteration,我正在尝试通过数组进行循环。我有以下代码: var currnt_image_list= '21,32,234,223'; var substr = currnt_image_list.split(','); // array here 我正在尝试从数组中获取所有数据。有人能给我指路吗?使用jQuery的功能 以下是一个例子: $.each(currnt_image_list.split(','), function(index, value) { alert(index + ':

我正在尝试通过数组进行循环。我有以下代码:

 var currnt_image_list= '21,32,234,223';
 var substr = currnt_image_list.split(','); // array here
我正在尝试从数组中获取所有数据。有人能给我指路吗?

使用jQuery的功能

以下是一个例子:

$.each(currnt_image_list.split(','), function(index, value) { 
  alert(index + ': ' + value); 
});
您可以使用
for()
循环:

var things = currnt_image_list.split(','); 
for(var i = 0; i < things.length; i++) {
    //Do things with things[i]
}
var things=current\u image\u list.split(',');
for(var i=0;i
此处不需要jquery,只需使用
for
循环即可:

var substr = currnt_image_list.split(',');
for(var i=0; i< substr.length; i++) {
  alert(substr[i]);
}
var substr=current\u image\u list.split(',');
对于(变量i=0;i
jQuery.each()

数组迭代

jQuery.each(array, function(Integer index, Object value){});
jQuery.each(object, function(string propertyName, object propertyValue){});
对象迭代

jQuery.each(array, function(Integer index, Object value){});
jQuery.each(object, function(string propertyName, object propertyValue){});
示例

var substr=[1,2,3,4];
$.each(substr,function(index,val){
console.log(索引,val)
});
var myObj={firstName:“天足”};
$.each(myObj,函数(propName,propVal){
console.log(propName,propVal);
});

(更新:My更全面地列出了非jQuery选项。下面的第三个选项,
jQuery。但每个选项都不在其中。)


四种选择:

通用循环:

(注意:还有很多其他功能,不仅仅是
forEach
;有关详细信息,请参阅。)

优点:声明性的,可以为迭代器使用预先构建的函数(如果您手头有),如果循环体很复杂,函数调用的作用域有时很有用,不需要在包含范围中使用
i
变量

缺点:如果在包含代码中使用
,并且希望在
forEach
回调中使用
,则必须A)将其粘贴在变量中,以便在函数中使用,B)将其作为第二个参数传递给
forEach
,以便
forEach
在回调期间将其设置为
this
,或C)使用ES2015+箭头函数关闭
this
。如果不执行这些操作之一,则在回调
中,此
将是
未定义的
(在严格模式下)或全局对象(
窗口
)处于松散模式。第二个缺点是,
forEach
没有得到普遍支持,但在2018年,您将遇到的唯一一个没有
forEach
的浏览器是IE8(而且它也不能在那里正确填充)

对于of,ES2015+的
:
有关如何工作的详细信息,请参见本答案顶部链接的答案

优点:简单明了,为数组中的条目提供了一个包含的范围变量(或常量)

缺点:任何版本的IE都不支持

jQuery.each: ()

优点:所有这些优点都与
forEach
相同,而且在使用jQuery时,您知道它就在那里

缺点:如果在包含代码中使用
,则必须将其粘贴在变量中,以便在函数中使用,因为
在函数中表示其他内容

不过,您可以通过以下两种方式避免
这件事:

…或
功能#绑定

jQuery.each(substr, function(index, item) {
    // do something with `item` (`this` is the same as it was outside)
}.bind(this));
…或在ES2015(“ES6”)中,箭头功能:

jQuery.each(substr, (index, item) => {
    // do something with `item` (`this` is the same as it was outside)
});
做什么: 不要为此使用
for..in
(或者如果使用,请使用适当的保护措施)。你会看到有人这样说(事实上,这里有一个简短的答案是这样说的),但是,
for..in
没有做很多人认为它做的事情(它做了一些更有用的事情!)。具体来说,
for..in
循环遍历对象的可枚举属性名(而不是数组的索引)。由于数组是对象,默认情况下,它们唯一可枚举的属性是索引,因此在平淡的部署中,这似乎是一种工作。但这不是一个安全的假设,你可以用它来实现。下面是一个探索:

我应该软化上面的“不要”。如果处理稀疏数组(例如,数组总共有15个元素,但由于某种原因,它们的索引分布在0到150000之间,因此
长度
为150001),如果使用适当的保护措施,如
hasOwnProperty
,并检查属性名称是否为真正的数字(请参阅上面的链接),
for..in
是避免大量不必要循环的一种非常合理的方法,因为只会枚举填充的索引。

使用jQuery
each()
。还有其他方法,但每种方法都是为此而设计的

$。每个(子字符串,函数(索引,值){
警报(值);
});
不要在最后一个数字后加逗号。

选项1:传统循环 基础 传统的
for
-循环有三个组件:

  • 初始化:在第一次执行look块之前执行
  • 条件:每次执行循环块之前都会检查一个条件,如果为false,则退出循环
  • 事后思考:每次执行循环块后执行
  • 这三个组件通过一个
    符号彼此分开。这三个组件中的每一个的内容都是可选的,这意味着以下是
    循环的最小

    for (;;) {
        // Do stuff
    }
    
    当然,您需要在
    for
    -循环的
    中的某个地方包含
    if(条件===true){break;}
    if(条件===true){return;}
    ,以使其停止运行

    通常,初始化用于声明索引,条件用于将该索引与最小值或最大值进行比较,事后考虑用于增加索引:

    for (var i = 0, length = 10; i < length; i++) {
        console.log(i);
    }
    
    或者,如果您喜欢向后循环
    jQuery.each(substr, $.proxy(function(index, item) {
        // do something with `item` (`this` is the same as it was outside)
    }, this));
    
    jQuery.each(substr, function(index, item) {
        // do something with `item` (`this` is the same as it was outside)
    }.bind(this));
    
    jQuery.each(substr, (index, item) => {
        // do something with `item` (`this` is the same as it was outside)
    });
    
    for (;;) {
        // Do stuff
    }
    
    for (var i = 0, length = 10; i < length; i++) {
        console.log(i);
    }
    
    for (var i = 0, length = myArray.length; i < length; i++) {
        console.log(myArray[i]);
    }
    
    for (var i = myArray.length - 1; i > -1; i--) {
        console.log(myArray[i]);
    }
    
    for (var key = 0, value = myArray[key], var length = myArray.length; key < length; value = myArray[++key]) {
        console.log(value);
    }
    
    var i = 0, length = myArray.length;
    for (; i < length;) {
        console.log(myArray[i]);
        i++;
    }
    
    var key = 0, value;
    for (; value = myArray[key++];){ 
        console.log(value);
    }
    
    var key = 0;
    while(value = myArray[key++]){
        console.log(value);
    }
    
    for(var key = 0;value = myArray[key++];){
        console.log(value);
    }
    
    for (i in myArray) {
        console.log(myArray[i]);
    }
    
    var myArray = [3, 5, 7];
    myArray.foo = "hello";
    
    for (var i in myArray) {
      console.log(i); // logs 0, 1, 2, "foo"
    }
    
    for (var i of myArray) {
      console.log(i); // logs 3, 5, 7
    }
    
    myArray.forEach(function(value, key, myArray) {
        console.log(value);
    });
    
    $.each(myArray, function(key, value) {
        console.log(value);
    });
    
    var data=["a","b","c"];
    $(data).each((index, element) => {
            console.log(`current index : ${index} element : ${element}`)
        });
    
    $.grep(array, function(element) {
    
    })
    
      for(var key in substr)
    {
         // do something with substr[key];
    
    }