Показать сообщение отдельно
  #4 (permalink)  
Старый 04.08.2011, 14:25
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Вот еще вариант с передачей матрицы, образующей формат данных:
function combinator(matrix){
  return matrix.reduceRight(function(combination, x){
    var result = [];
    x.forEach(function(a){
      combination.forEach(function(b){
        result.push( [ a ].concat( b ) );
      });
    });
    return result;
  });
};

alert(
  combinator([ [ 1, 3 ], [ "a", "b"], [ 2, 4, ] ] ).join("\n")
);

/* А это, чтобы получить все варианты авто-номеров: 
var digits = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ],
     letters = [ "A", "B", "C", "E", "H", "K", "M", "O", "P", "T", "X", "Y" ];
combinator([ letters, digits, digits, digits, letters, letters ]);
*/
Ответить с цитированием