jQuery / Javascript多个数组合
我一直试图找到解决方案,但无济于事。 我想要实现的目标是能够找到多个列表的所有独特组合。 所以,假设我有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) });
如果有一个递归的function路径来回答这个是理想的,就像我说的那样,列表的数量可以是任何东西,以及列表的内容。
希望你们和女孩们可以提供帮助,这是我的头脑。
干杯 – 丹
这应该工作:)
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 ( );
与你的arrays
[0] => ['blue', 'green'] [1] => ['small', 'medium', 'large'] [2] => ['Pack Of 6', 'Pack Of 8']
结果会是这样的:
- 蓝色小包6
- 蓝色小包8
- 蓝色中等包装6
- ...
您可以将页面http://www.1your.com/drupal/FullCodeFindingAllStringCombinationsUsingRecursion中的Java源代码修改为JavaScript – 这个想法应该很容易理解,即使您没有太多接触Java。 我怀疑有一个现成的解决方案。