Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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_String_Algorithm_Function - Fatal编程技术网

在JavaScript中生成可变长度逗号-空格分隔字符串的所有可能组合

在JavaScript中生成可变长度逗号-空格分隔字符串的所有可能组合,javascript,arrays,string,algorithm,function,Javascript,Arrays,String,Algorithm,Function,输入: 预期产出: ["A", "B", "C"] 这是一个简单的示例,但该函数应适用于所有长度的字符串和数组。字符串可能重复某些字母,例如“AABB”,它不同于“A”和“B”。首先按元素的数量排序,然后进行字母数字排序,但此解决方案不需要。您可以使用置换函数,然后在拆分后连接特定字符串: 常量arr=[“A”、“B”、“C”]; 函数组合(字符){ var结果=[]; var f=函数(前缀、字符){ 对于(变量i=0;ie.length>1?e.split(“”).join(“”,“”)

输入:

预期产出:

["A", "B", "C"]

这是一个简单的示例,但该函数应适用于所有长度的字符串和数组。字符串可能重复某些字母,例如“AABB”,它不同于“A”和“B”。首先按元素的数量排序,然后进行字母数字排序,但此解决方案不需要。

您可以使用置换函数,然后在拆分后连接特定字符串:

常量arr=[“A”、“B”、“C”]; 函数组合(字符){ var结果=[]; var f=函数(前缀、字符){ 对于(变量i=0;ie.length>1?e.split(“”).join(“”,“”):e);
控制台日志(排列)这实际上是我最近在scheme中一直在做的事情,您似乎在寻找的是一个从一组输入生成的过程。恰好有一个递归算法已经存在,可以解决这个问题,但它是基于数学的,我不需要在这里讨论

下面是我针对您的问题修改的一个简单JavaScript实现:

constmylist=[“A”、“B”、“C”];
常数功率集=
theArray=>theArray.reduce(
(子集,值)=>subsets.concat(
map(set=>[value,…set])
),
[[]]
);

console.log(powerSet(myList))这就是我最终用来作为实现基础的内容:


您应该提供您已经尝试过的内容。您的强力搜索稍微澄清了我的问题,因为它似乎无法区分大于单个字母长度的字符串。
["A", "B", "C", "A, B", "A, C", "B, C", "A, B, C"]