我有一些javascript for {}
循环,我在整个项目中反复使用它们,它们都与此类似:
for (var i = 0; i < things.length; i++) {
console.log(things[i]);
// This may be different in different areas of the project
}
我缩小了代码,但循环占用了大量的缩小代码。有没有办法将上面的代码缩短为:
loop {
console.log(things[i]);
// This may be different in different areas of the project
}
可能不是上述内容,但你明白了。 任何帮助将不胜感激:))
答案 0 :(得分:4)
如果你反复打印不同的数组,你可以为它做一个功能,以减少你的重复:
function printArray(arr) {
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
}
然后打电话给:
printArray(things);
如果你做的不仅仅是打印并希望它更具通用性,你应该使用回调,如下所示:
function loopArr(arr, cb) {
for (var i = 0; i < arr.length; i++) {
cb(arr[i]);
}
}
这可以被称为:
loopArr(thing, function (i) {
console.log(i);
});
还有一些工具可以为你做这件事,例如,如果你正在使用(或者想要使用)jQuery,你可以使用jQuery.each()
答案 1 :(得分:3)
jQuery-ish方法:
function each(arr, func) {
for ( var i = 0; i < arr.length; ++i ) {
func(arr[i]);
}
}
可以像:
一样调用each( things, function(thing) { console.log(thing); } );
或
each( things, function(thing) { console.log(thing); alert(thing); } );
等
答案 2 :(得分:1)
你必须传递项目和回调,但当然有可能。
function loop (item, callback) {
for (var i = 0; i < item.length; i++) {
callback(item[i]);
}
}
用途:
loop(things, function (item) {
console.log('do things here with each ' + item);
});
另请注意,在更现代的浏览器中,您可以执行以下操作:
things.forEach(function (item) {
/* do whatever */
});
答案 3 :(得分:1)
function forEach(array, func) {
var i = array.length;
while(i--) {
func(array[i]);
}
}
答案 4 :(得分:0)
每个人都打败了我,但这是另一种写作方式
function forEach(collection, callback){
var e;
for (var i = 0; e = collection[i++];) {
callback(e);
}
}
及其用法:
var a = ["The", "Brown", "Cow"];
forEach(a, function(e) { console.log(e); });
应该提到的是,有大量的迭代器函数实现。你确切的情况我需要改进这些。