Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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,我以下面的数组为例 let arr = [['red','blue','pink],['dog','cat','bird'],['loud', 'quiet']] 我需要编写一个通用函数,它打印第一个向量中一个单词的所有组合,第二个向量中一个单词的所有组合,等等。我在这里查找了一些代码,但它们都是递归的,或者只处理特定数组。如果没有递归,如何编写此代码 let allComb = function(arr) { if (arr.length == 1) { return arr[0

我以下面的数组为例

let arr = [['red','blue','pink],['dog','cat','bird'],['loud', 'quiet']]
我需要编写一个通用函数,它打印第一个向量中一个单词的所有组合,第二个向量中一个单词的所有组合,等等。我在这里查找了一些代码,但它们都是递归的,或者只处理特定数组。如果没有递归,如何编写此代码

let allComb = function(arr) {
  if (arr.length == 1) {
    return arr[0];
  } else {
    let result = [];
    let arrComb = allComb(arr.slice(1));
    for (let i = 0; i < arrComb.length; i++) {
      for (let j = 0; j < arr[0].length; j++) {
        result.push(arr[0][j] + ' ' + arrComb[i]);
      }
    }
    return result;
  }
} 

allComb(arr)
let allComb=函数(arr){
如果(arr.length==1){
返回arr[0];
}否则{
让结果=[];
设arrComb=allComb(arr.slice(1));
for(设i=0;i
您可以执行以下操作:

var arr=[['red'、'blue'、'pink']、['dog'、'cat'、'bird']、['loud'、'quiet'],
res=arr.reduce((p,c)=>p.reduce((r,x)=>r.concat(c.map(y=>x+“”+y)),[]);

控制台日志(res)此版本使用无递归的单周期增量技术

让arr=[
[“红色”、“蓝色”、“粉色”],
[‘狗’、‘猫’、‘鸟’],
[‘大声’、‘安静’]
];
函数ALLCOM(arr){
var总计=1;
var电流=[];
var结果=[];
对于(var j=0;j控制台日志(allComb(arr))此解决方案很好,但如何在不分解代码的情况下将其用于其他数组?其他数组。。?您可以将此应用于无限多个数组,它将以所需的方式解析组合。在
r.concat(c.map(y=>x+“”+y))
map
回调中定义了每个组合项的构造。因此,在这种特殊情况下,字符串项由
x+“”+y
连接。如果您喜欢使用一些整数数组,则可以选择将它们相加或相乘,如
x+y
x*y
。我希望这就是你要问的。