缩小{}循环

时间:2013-08-19 21:15:49

标签: javascript optimization minify

我有一些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
}

可能不是上述内容,但你明白了。 任何帮助将不胜感激:))

5 个答案:

答案 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);
});

Fiddle


还有一些工具可以为你做这件事,例如,如果你正在使用(或者想要使用)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); });

应该提到的是,有大量的迭代器函数实现。你确切的情况我需要改进这些。