Javascript 列表的笛卡尔积
我需要两个javascript列表的笛卡尔乘积 例如:Javascript 列表的笛卡尔积,javascript,dictionary,arraylist,cartesian-product,Javascript,Dictionary,Arraylist,Cartesian Product,我需要两个javascript列表的笛卡尔乘积 例如: 让l1=['a','e','f']; 设l2=['1','3','2']; 设lp=prod(l1,l2); lp将是 [ ['a','1'], ['e','1'], ['f','1'], ['a','3'], ['e','3'], ['f','3'], ['a','2'], ['e','2'], ['f','2'] ] 我可以很容易地使用for/foreach循环,但我想知道是否有人会对map函数提出一些优雅的建议 让l1=['a'
让l1=['a','e','f'];
设l2=['1','3','2'];
设lp=prod(l1,l2);
lp将是
[
['a','1'],
['e','1'],
['f','1'],
['a','3'],
['e','3'],
['f','3'],
['a','2'],
['e','2'],
['f','2']
]
我可以很容易地使用for/foreach循环,但我想知道是否有人会对map函数提出一些优雅的建议
让l1=['a','e','f'];
设l2=['1','3','2'];
console.log(l1.map)(a=>{
返回l2.map(b=>{
返回[a,b];
})
}).flat())
尝试以下操作
让l1=['a','e','f'];
设l2=['1','3','2'];
console.log(l1.map)(a=>{
返回l2.map(b=>{
返回[a,b];
})
}).flat())
您可以使用reduce和map的组合:
console.log(l1.reduce((result, el1) => {
result.push(...l2.map((el2) => [el1, el2]));
return result;
}, []));
您可以结合使用reduce和map:
console.log(l1.reduce((result, el1) => {
result.push(...l2.map((el2) => [el1, el2]));
return result;
}, []));
这应该起作用:
功能产品(l1、l2){
返回l2.reduce(
(p,b)=>p.concat(l1.map(a=>a,b)),
[],
);
}
常数l1=['a','e','f'];
常数l2=['1','3','2'];
常数lp=产品(l1,l2);
控制台日志(lp)代码>这应该可以:
功能产品(l1、l2){
返回l2.reduce(
(p,b)=>p.concat(l1.map(a=>a,b)),
[],
);
}
常数l1=['a','e','f'];
常数l2=['1','3','2'];
常数lp=产品(l1,l2);
控制台日志(lp)代码>通过减少阵列并构建新阵列,您可以采取一种适用于两个以上阵列的方法
让l1=['a','e','f'],
l2=['1','3','2',],
结果=[l1,l2]
.reduce((a,b)=>a.reduce((r,v)=>r.concat(b.map(w=>[]),concat(v,w)),[]);
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以采取一种方法,通过减少阵列并构建新阵列,使其适用于两个以上的阵列
让l1=['a','e','f'],
l2=['1','3','2',],
结果=[l1,l2]
.reduce((a,b)=>a.reduce((r,v)=>r.concat(b.map(w=>[]),concat(v,w)),[]);
控制台日志(结果)代码>
.as控制台包装{max height:100%!important;top:0;}
看起来正确而优雅,但我得到一个“flat不是函数”错误。flat()使用安全吗?根据MDN,Edge和Internet explorer中没有flat
。好吧,即使这些不是我最喜欢的浏览器,我也会避免使用它。但是谢谢你的回答,它真的很优雅。看起来正确而优雅,但是我得到了一个“平坦不是函数”的错误。flat()使用安全吗?根据MDN,Edge和Internet explorer中没有flat
。好吧,即使这些不是我最喜欢的浏览器,我也会避免使用它。但是谢谢你的回答,它真的很优雅。