Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向这个递归标签生成器添加特定需求?_Javascript_Arrays_If Statement_Recursion - Fatal编程技术网

Javascript 如何向这个递归标签生成器添加特定需求?

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

我正试图构建一个具有特定需求的hashtag生成器。下面的函数运行良好,但我想排除仅由一个单词组成的所有hashtag。这是一个脑筋急转弯,我就是想不起来

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);
返回结果;
}

您可以在此处看到此功能:

此功能非常有效!非常感谢你!非常简洁。