Javascript 如何向这个递归标签生成器添加特定需求?
我正试图构建一个具有特定需求的hashtag生成器。下面的函数运行良好,但我想排除仅由一个单词组成的所有hashtag。这是一个脑筋急转弯,我就是想不起来Javascript 如何向这个递归标签生成器添加特定需求?,javascript,arrays,if-statement,recursion,Javascript,Arrays,If Statement,Recursion,我正试图构建一个具有特定需求的hashtag生成器。下面的函数运行良好,但我想排除仅由一个单词组成的所有hashtag。这是一个脑筋急转弯,我就是想不起来 function hashtag(string) { var words = string.split(" "); var result = []; var f = function(prefix, words) { for (var i = 0; i < words.length; i++) { r
function hashtag(string) {
var words = string.split(" ");
var result = [];
var f = function(prefix, words) {
for (var i = 0; i < words.length; i++) {
result.push(prefix + words[i]);
f(prefix + words[i], words.slice(i + 1));
}
};
f('#', words);
return result;
}
我希望它能产生
[ '#Golden', '#GoldenGate', '#GoldenGateBridge', '#GoldenBridge', '#Gate', '#GateBridge', '#Bridge' ]
['#GoldenGate', '#GoldenGateBridge', '#GoldenBridge', '#GateBridge']
请注意,所有单字源hashtag都消失了
我尝试添加一个“depth”变量,该变量随递归的每一个附加级别递增,并尝试了一些“if”语句,但找不到正确的组合
谢谢你的帮助!我真的很感激。添加深度计数器的方法是正确的
function hashtag(string) {
var words = string.split(" ");
var result = [];
var f = function(prefix, words, depth) {
for (var i = 0; i < words.length; i++) {
// Only add this hashtag if our prefix depth is > 1
if (depth > 1) {
result.push(prefix + words[i]);
}
// Increase the prefix depth with each iteration.
f(prefix + words[i], words.slice(i + 1), depth + 1);
}
};
// Pass the default depth
f('#', words, 1);
return result;
}
函数标签(字符串){
var words=string.split(“”);
var结果=[];
var f=函数(前缀、单词、深度){
for(var i=0;i1){
结果推送(前缀+单词[i]);
}
//随着每次迭代增加前缀深度。
f(前缀+单词[i],单词.slice(i+1),深度+1);
}
};
//传递默认深度
f(“#”,字,1);
返回结果;
}
您可以在此处看到此功能:此功能非常有效!非常感谢你!非常简洁。