jQuery / Javascript多数组合

时间:2009-10-28 10:22:37

标签: javascript jquery

我一直试图找到解决方案但没有用。我想要实现的目标是能够找到多个列表的所有独特组合。所以,假设我有3个复选框列表(但这是现实应用程序中的未知数字),颜色,大小,包大小。列表中的项目将是unqiue。

[0] => ['blue', 'green']
[1] => ['small', 'medium', 'large']
[2] => ['Pack Of 6', 'Pack Of 8']

我想要“蓝色,小,6件装”,“蓝色,中等,6件装”,“蓝色,大,一包6个“,”蓝色,小,一包8个“,”蓝色,中等,一包8个“等。 排序并不重要,但将其逻辑分组会很好。

我已经使用jQuery将列表拉入数组:

       options = [];

       jQuery('.option-types').each(function(){
            opts = [];
            jQuery('input:checked', this).each(function(){
                opts.push(jQuery(this).next().text());
            });
            options.push(opts)
        });

如果有一个递归的功能路径来回答这个是理想的,就像我说的那样,列表的数量可以是任何东西,以及列表的内容。

希望你们和女孩们能够提供帮助,这是我的目标。

干杯 - 丹

2 个答案:

答案 0 :(得分:6)

这应该有效:)

var recursiveSearch;
var possibilities = [];

recursiveSearch = function (text, depth )
{
 text = text || "";
 depth = depth || 0;
 for ( var i = 0; i < options[depth].length; i++ )
 {
   // is there one more layer?
   if ( depth +1 < options.length )
     // yes: iterate the layer
     recursiveSearch ( text + ((text=="") ? "" : " ") + options[depth][i] , depth +1 );
   else
     // no: this is the last layer. we add the result to the array
     possibilities.push ( text + options[depth][i] );
 }
}


recursiveSearch ( );

使用您的数组

[0] => ['blue', 'green']
[1] => ['small', 'medium', 'large']
[2] => ['Pack Of 6', 'Pack Of 8']

结果会像这样:

  1. 蓝色小包6
  2. 蓝色小包装8
  3. 蓝色中等包装6
  4. ...

答案 1 :(得分:0)

您可以将页面http://www.1your.com/drupal/FullCodeFindingAllStringCombinationsUsingRecursion中的Java源代码修改为JavaScript - 这个想法应该易于理解,即使您没有太多接触Java。我怀疑有一个现成的解决方案。