用JavaScript中的字符数组替换单个字符,生成所有可能的字符串

用JavaScript中的字符数组替换单个字符,生成所有可能的字符串,javascript,string,Javascript,String,我有一些字符串,比如“pXoX-prawa”,它们可能包含一个随机数X。我想用波兰特殊字符替换这些X ['ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż'] 并生成包含所有可能变体的字符串。在“pXoX-prawa”的情况下,有两个X,因此所有可能的组合都是9^2=81,其中9是波兰特殊字符的数量。我可以对它进行暴力编程,但我想知道是否有人能想出一个1-2行的解决方案。也许是一些递归编码。有什么想法吗?如果您想使用外部库,没有问题。使用一点递归,您应该能够处

我有一些字符串,比如“pXoX-prawa”,它们可能包含一个随机数X。我想用波兰特殊字符替换这些X

['ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż']

并生成包含所有可能变体的字符串。在“pXoX-prawa”的情况下,有两个X,因此所有可能的组合都是9^2=81,其中9是波兰特殊字符的数量。我可以对它进行暴力编程,但我想知道是否有人能想出一个1-2行的解决方案。也许是一些递归编码。有什么想法吗?如果您想使用外部库,没有问题。

使用一点递归,您应该能够处理多个“X”的组合

下面是一个片段来说明这一点

var数组=['ą'、ć'、'ę'、'ł'、'ó'、'ś'、'ź'、'ż'];
变量输入='pXoX prawa';
常量输入=输入。拆分(“”);
//让我们存储所有“X”的位置。
常量posX=[];
inputs.forEach((i,ix)=>{if(i=='X')posX.push(ix);});
//让我们为循环设置一个计数器
var c=0;
函数循环(idx){
for(设l=0;l环(0)您可以使用一个通用函数,生成所有重复的n个组合,并将每个组合应用于模板:

函数*重复组合(a,n){
if(n<2){
收益率*a;
回来
}
for(设a的x)
对于(设c的组合与重复(a,n-1))
收益率[x]。浓度(c);
}
//
字符='ABCD'
模板='X和X'
对于(让c的组合重复(字符,2))

console.log(template.replace(/X/g,=>c.shift())
如果有3个X,这是否有效?正如我写的那样,我不知道会有多少个X。@GismoRanas:是的,请看更新。我已经投票决定重新开始这个问题,但请不要在以后的帖子中添加投票/元评论材料。这是一个相当主观的话题,但它也是一个免费工作的要求,正如你的好意,让读者使用他们喜欢的任何图书馆。读者中有一种观点认为,问题作者在提出问题之前必须至少做过研究。