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
是避免大量不必要循环的一种非常合理的方法,因为只会枚举填充的索引。使用jQueryeach()
。还有其他方法,但每种方法都是为此而设计的
$。每个(子字符串,函数(索引,值){
警报(值);
});
不要在最后一个数字后加逗号。选项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];
}