jQuery/Javascript多个数组组合

5

我一直在努力寻找解决方案,但无果。我的目标是能够找到多个列表的所有唯一组合。假设我有 3 个复选框列表(但在实际应用中可能是未知数量),颜色、尺寸、包装大小。列表中的项目将是唯一的。

[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)
        });

如果有一个递归的函数路径来回答这个问题就太理想了,因为像我说的,列表的数量和列表的内容都可能是任何东西。希望你们能帮忙解决这个问题,它让我很困扰。谢谢 - 丹

如果我能够得到每个输出都是一个数组,那就太好了 - 所以 [0] = ["Small", "Blue", "Pack Of 6"], [1] = ["Small, "Green", "Pack Of 8"],等等... - dan richardson
抱歉,我不明白你的问题 - 我看到你已经做了什么,但你想要什么? - jantimon
我在上下两个代码块中提到了获取所有项目的唯一组合。 - dan richardson
我找到了以下链接,可能可以完成工作,但它是用Python编写的。如果有人能帮忙翻译一下,那就太好了!谢谢 - http://code.activestate.com/recipes/496807/ - dan richardson
请参见https://dev59.com/5WDVa4cB1Zd3GeqPgszQ,了解“懒惰”(延迟)JavaScript版本。 - Phrogz
2个回答

7
这应该可以正常工作 :)
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. ...

Ghommey,你说得很对。非常感谢你的帮助! - dan richardson

0

我真的看不出来这与问题有什么关系,因为这涉及到多个二维数组,不过还是谢谢。 - dan richardson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接