如何在JavaScript中生成两个长度不等的数组之间的所有成对组合?
我想得到两个数组之间所有可能的对组合。阵列的大小可能相同,也可能不同。例如:如何在JavaScript中生成两个长度不等的数组之间的所有成对组合?,javascript,arrays,Javascript,Arrays,我想得到两个数组之间所有可能的对组合。阵列的大小可能相同,也可能不同。例如: arr1=[“汤姆”、“苏”、“吉姆”]和arr2=[“美国”、“日本”]将产生以下对: ["tom", "usa"] ["tom", "japan"] ["sue", "usa"] ["sue", "japan"] ["jim", "usa"] ["jim", "japan"] 到目前为止,我得到的是以下代码,如果数组长度不等,则不会返回所有对: var pairs= []; for (var i = 0;
arr1=[“汤姆”、“苏”、“吉姆”]
和arr2=[“美国”、“日本”]
将产生以下对:
["tom", "usa"]
["tom", "japan"]
["sue", "usa"]
["sue", "japan"]
["jim", "usa"]
["jim", "japan"]
到目前为止,我得到的是以下代码,如果数组长度不等,则不会返回所有对:
var pairs= [];
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
pairs.push(arr1[i] + arr2[j]);
}
}
console.log(pairs);
var对=[];
对于(变量i=0;i
您的代码很好。要获得与现有结构类似的结构,可以将值括在数组中
让arr1=[“汤姆”、“苏”、“吉姆”];
设arr2=[“美国”、“日本”];
让配对=[];
对于(变量i=0;i更简单:
var arr1 = ["tom", "sue", "jim"];
var arr2 = ["usa", "japan"];
pairs = arr1.map(el1 => arr2.map(el2 => [el1, el2]))
console.log(pairs)
您可以使用以下功能组合阵列:
var arr1 = ["tom", "sue", "jim"];
var arr2 = ["usa", "japan"];
function combine() {
[].sort.call(arguments, (a, b) => b.length - a.length);
return arguments[0].map(n => arguments[1].map(a => [n, a]));
}
console.log(combine(arr1, arr2));
这将输出以下数组,在数组中保存每个可能的对组合:
[ [ [ 'tom', 'usa' ], [ 'tom', 'japan' ] ],
[ [ 'sue', 'usa' ], [ 'sue', 'japan' ] ],
[ [ 'jim', 'usa' ], [ 'jim', 'japan' ] ] ]
var arr1=[“汤姆”、“苏”、“吉姆”]
var arr2=[“美国”、“日本”];
var pairs=arr1.reduce((p,c)=>p.concat(arr2.map(v=>[c].concat(v)),[]))
log(成对)
在该示例中,您没有得到所有可能的组合,您已经列出了3次。对于2个项目*3个项目,您应该有6个组合。您的代码很好…除了在For
循环之后的之外,您的代码工作得很好。
[ [ [ 'tom', 'usa' ], [ 'tom', 'japan' ] ],
[ [ 'sue', 'usa' ], [ 'sue', 'japan' ] ],
[ [ 'jim', 'usa' ], [ 'jim', 'japan' ] ] ]