Javascript是将数组元素相互组合的最有效方法
我试图将字符串数组与独特的组合组合在一起,比如“Mark | Tom”,但没有“Tom | Mark” 我编写了以下代码:Javascript是将数组元素相互组合的最有效方法,javascript,arrays,set,Javascript,Arrays,Set,我试图将字符串数组与独特的组合组合在一起,比如“Mark | Tom”,但没有“Tom | Mark” 我编写了以下代码: 让arr=['Tom','Danny','Mark'] 设集合=[] for(设i=0;iname!=arr[i]) 其他。forEach((其他)=>{ 设newel=arr[i]+'|'+其他 设test=newel.split(“|”) if(set.includes(test[1]+'|'+test[0])| | set.includes(newel))返回 设置
让arr=['Tom','Danny','Mark']
设集合=[]
for(设i=0;iname!=arr[i])
其他。forEach((其他)=>{
设newel=arr[i]+'|'+其他
设test=newel.split(“|”)
if(set.includes(test[1]+'|'+test[0])| | set.includes(newel))返回
设置推送(newel)
})
}
console.log(组)
这个怎么样:
const arr=['Tom','Danny','Mark'];
常量集=[];
for(设i=0;i 控制台日志(套)代码>您可以创建一组传递的数组,循环遍历数组,对于每个索引,在该索引之后获取数组,并循环遍历其他数组和构建组合
让arr=['Tom','Danny','Mark']
const uniqueCombo=(arr)=>{
let newSet=[…新集(arr)]
return newSet.reduce((op,inp,index)=>{
newSet.slice(索引+1,).forEach(v=>{
op.push(inp+'|'+v)
})
返回操作
},[])
}
控制台日志(uniqueCombo(arr))
log(uniqueCombo(['A','B','A','C','D']))
log(uniqueCombo(['A','B','A','C'])
试试这个。这种方法过滤掉以前用于将项推送到数组的索引
const arr=['Tom','Danny','Mark'];
常数梳=[];
for(设i=0;i 控制台日志(comb)代码>我会将您的数组设置为一个集合,这样它将在开始时删除所有重复项,如下所示:
new Set(['Tom', 'Danny', 'Mark']);
现在,您可以使用.flatMap
和将第i个
元素与所有元素配对,直到第n个
元素
const name\u arr=Array.from(新集合(['Tom','Danny','Mark']);
const res=name\u arr.flatMap(
(name,i)=>name_arr.slice(i+1).reduce((a,n)=>[…a,name+''|'+n],]))
);
控制台日志(res)代码>您可以发布所需的输出吗?还有为什么它应该是Mark | Tom
而不是Tom | Mark
?只要运行代码片段就行了如果它是Mark | Tom或Tom | Mark,它必须是唯一的组合输出您的代码显示与逻辑不匹配,因此会更好地达到预期的结果,您想Tony | Dany | Mark
也在输出中吗?当然!下一步是匹配高音组合请用期望的结果更新您的帖子您可以在SO mate上创建一个运行片段,@CodeManiac Ahhh非常感谢!我一直在寻找:)永远欢迎,不管怎样,这是个好答案,可能是最有效的答案+1