我一直试图找到解决方案但没有用。我想要实现的目标是能够找到多个列表的所有独特组合。所以,假设我有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)
});
如果有一个递归的功能路径来回答这个是理想的,就像我说的那样,列表的数量可以是任何东西,以及列表的内容。
希望你们和女孩们能够提供帮助,这是我的目标。
干杯 - 丹
答案 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 :(得分:0)
您可以将页面http://www.1your.com/drupal/FullCodeFindingAllStringCombinationsUsingRecursion中的Java源代码修改为JavaScript - 这个想法应该易于理解,即使您没有太多接触Java。我怀疑有一个现成的解决方案。