Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

如何在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' ] ] ]