Используйте собственный реактор-нетто, Как изменить статус ответа после выполнения метода?

После небольшого исследования я обнаружил предыдущий связанный с ним вопрос: Поиск всех комбинаций значений массива JavaScript

Я адаптировал часть кода оттуда, чтобы он возвращался массив массивов, содержащий все перестановки:

function(arraysToCombine) {
    var divisors = [];
    for (var i = arraysToCombine.length - 1; i >= 0; i--) {
       divisors[i] = divisors[i + 1] ? divisors[i + 1] * arraysToCombine[i + 1].length : 1;
    }

    function getPermutation(n, arraysToCombine) {
       var result = [], 
           curArray;    
       for (var i = 0; i < arraysToCombine.length; i++) {
          curArray = arraysToCombine[i];
          result.push(curArray[Math.floor(n / divisors[i]) % curArray.length]);
       }    
       return result;
    }

    var numPerms = arraysToCombine[0].length;
    for(var i = 1; i < arraysToCombine.length; i++) {
        numPerms *= arraysToCombine[i].length;
    }

    var combinations = [];
    for(var i = 0; i < numPerms; i++) {
        combinations.push(getPermutation(i, arraysToCombine));
    }
    return combinations;
}

Я поместил рабочую копию в http://jsfiddle.net/7EakX/ , которая принимает массив, который вы ([[0,1], [0,1,2,3], [0,1,2]]) и выводит результат на консоль браузера.

0
задан Henry 24 February 2019 в 09:26
поделиться