Javascript 从2个数组中选择随机整数,直到条件为真

Javascript 从2个数组中选择随机整数,直到条件为真,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,我想知道编写一个函数的最有效方法是什么,它接受两个随机整数数组,并在找到一对匹配整数时终止 在下面的示例中,有两个数组,一个比另一个大。 较大的数组包含潜在的除数,较小的数组包含除数。 我想让函数计算,直到找到一对无余数可除的除数和除数 例如: var listDivident = _.shuffle(_.range(1, 101)); var listDivisor = _.shufle(_.range(1, 11)); randomMatch = function (listDividen

我想知道编写一个函数的最有效方法是什么,它接受两个随机整数数组,并在找到一对匹配整数时终止

在下面的示例中,有两个数组,一个比另一个大。 较大的数组包含潜在的除数,较小的数组包含除数。 我想让函数计算,直到找到一对无余数可除的除数和除数

例如:

var listDivident = _.shuffle(_.range(1, 101));
var listDivisor = _.shufle(_.range(1, 11));

randomMatch = function (listDivident, listDivisor) {
   /* until ((listDivident % listDivisor !== "undefined") 
      && (listDivident % listDivisor === 0) {
        ...
      }
   */
    return {
        matchDivident: matchDivident,
        matchDivisor: matchDivisor
    };
};
JS中是否有类似于“直到”的函数或构造

谢谢你的帮助! Vin

您所谓的“直到”可以通过循环来实现,直到找到您需要的:

var listDivident = _.shuffle(_.range(1, 101));
var listDivisor = _.shufle(_.range(1, 11));

randomMatch = function (listDivident, listDivisor) {
    var i = 0,
        found = false,
        dividentLength = listDivident.length,
        divisorLength = listDivisor.length,
        matchDivident = null,
        matchDivisor = null;
    while (!found && i < dividentLength && i < divisorLength) {
        if (listDivident[i] % listDivisor[i] === 0) {
            matchDivident = listDivident[i];
            matchDivisor = listDivisor[i];
            found = true;
        } else {
            i++;
        }
    }
    return {
        matchDivident: matchDivident,
        matchDivisor: matchDivisor
    };
};

除非数组非常大,否则只需先生成所有有效对,然后随机选取一对:

var pairs = [];

_.each(listDivident, function(a) {
    _.each(listDivisor, function(b) {
        if(!(a % b))
            pairs.push([a, b])
    })
});

result = _.shuffle(pairs)[0];

不要想“一直做XXX直到…”,而要想“还没做,继续”。你需要一个
While
循环。谢谢我使用了
\示例(成对)
作为结果,因此它更简短:)谢谢您丰富的答案!我将坚持格奥尔格的回答,因为它是短的倾斜。
var pairs = [];

_.each(listDivident, function(a) {
    _.each(listDivisor, function(b) {
        if(!(a % b))
            pairs.push([a, b])
    })
});

result = _.shuffle(pairs)[0];