我很难将以下概念纳入代码中:
假设我们得到以下数组:
[
'h1,h2',
'span,style'
]
我希望从中获得以下输出:
[
'h1 span',
'h1 style',
'h2 span',
'h2 style
]
这样我们就有了一个字符串数组,其中包含原始数组的所有组合,这也遵守顺序(因此span h1
和style h2
无效)。
详细描述:我有一个单级字符串数组,这些字符串实际上是逗号分隔的值。我希望遍历此数组并将这些字符串以逗号分隔为一个新数组,并为该新数组中的每个索引构建一个新字符串,其中包含原始数组中后续索引中的所有其他拆分值。
我在尝试用JavaScript编程时遇到困难。我知道我将需要一些递归,但是我对如何做到这一点感到困惑。在尝试了各种不同且失败的方法之后,我目前有:
function mergeTagSegments(arr, i, s) {
i = i || 0;
s = s || '';
if(!arr[i]) { return s; }
var spl = arr[i].split(',');
for(var j in spl) {
s += spl[j] + mergeTagSegments(arr, i+1, s);
}
return s;
}
这也无法按预期工作。
我无法完成原本认为如此简单的任务,这让我感到有些尴尬。但我真的希望从中学到东西。
在此先非常感谢您的建议和技巧。
您的思路正确。递归无疑是要走的路。我在下面实现了建议的解决方案,该解决方案应该为您提供所需的输出。
var values = ['h1,h2', 'span,style'];
function merge(input, index) {
var nextIndex = index + 1;
var outputArray = [];
var currentArray = [];
if(index < input.length) {
currentArray = input[index].split(',');
}
for(var i = 0, end = currentArray.length; i < end; i++) {
if(nextIndex < input.length) {
merge(input, nextIndex).forEach(function(item) {
outputArray.push(currentArray[i] + ' ' + item);
});
}
else {
outputArray.push(currentArray[i]);
}
}
return outputArray;
}
var output = merge(values, 0, '');
console.log(output);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句