Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将循环定义为要重用的函数_Javascript_Function_Loops - Fatal编程技术网

Javascript 将循环定义为要重用的函数

Javascript 将循环定义为要重用的函数,javascript,function,loops,Javascript,Function,Loops,我多次使用以下循环: for(var i = 0; i < $options.length; i++) { //... 但这是行不通的。如何将一个循环转换为一个可重用函数,并将另一个函数传递给该函数?还有一个问题。。。我想这么做是不是疯了 谢谢 您是否正在尝试访问回调中的i?您可能希望将其传递给回调您应该将循环值传递给回调: function optionLoop( $options, callback) { for(var i = 0; i < $options.

我多次使用以下循环:

    for(var i = 0; i < $options.length; i++) { //...
但这是行不通的。如何将一个循环转换为一个可重用函数,并将另一个函数传递给该函数?还有一个问题。。。我想这么做是不是疯了


谢谢

您是否正在尝试访问回调中的
i
?您可能希望将其传递给
回调

您应该将循环值传递给回调:

function optionLoop( $options, callback) {
    for(var i = 0; i < $options.length; i++) {
        callback(i, $options[i]);
    }
}
这是小提琴:


更新:如果您希望能够从函数中打破循环,请使用以下命令:

function optionLoop( $options, callback) {
    for(var i = 0; i < $options.length; i++) {
        if ( callback(i, $options[i]) === false ) break;
    }
}
函数选项loop($options,callback){
对于(变量i=0;i<$options.length;i++){
如果(回调(i,$options[i])==false)中断;
}
}
如果要中断,只需返回
false


这是小提琴:

太棒了,约瑟夫,谢谢你!在第二个代码段中,您传递给函数的“value”参数是什么?@j-man86-查看fiddle。它是位于
索引
位置的数组的值。这是JS自动解释的吗?i、 数组的内置变量?如果我想在函数内部使用“break”。。。是否应该更改为返回false@j-man86-您需要更改
optionLoop()
函数来测试返回值:
if(false==callback(i,$options[i]){break;}
。然后您可以从回调中返回
false
,以停止循环。
function optionLoop( $options, callback) {
    for(var i = 0; i < $options.length; i++) {
        callback(i, $options[i]);
    }
}
optionLoop($options, function(index, value) {
});
function optionLoop( $options, callback) {
    for(var i = 0; i < $options.length; i++) {
        if ( callback(i, $options[i]) === false ) break;
    }
}