多个数组笛卡尔积-js算法
示例1:求两个数组笛卡尔积
假如有两个数组,求笛卡尔积,其基本思路是这样的:
在遍历一个数组的同时,遍历另一个数组,然后把元素拼接,放到新数组。
/*方式一:两个数组求笛卡尔积*/ var arr1 = ["1","2","3"]; var arr2 = ["a","b","c"]; const arr =[]; /* 在遍历一个数组的同时,遍历另一个数组,然后把元素拼接,放到新数组。*/ arr1.forEach(param1 =>{ arr2.forEach(param2 =>{ arr.push(param1+"_"+param2); }); }); console.log(arr);
示例2:求多个数组笛卡尔积
使用reduce函数:
reduce(callback,initvalue)
/*方式二:多个数组求笛卡尔积*/ var array1 = ["1", "2"]; var array2 = ["a", "b"]; var array3 = ["@", "*"]; // 作为二维数组来运算 var array4 = [array1, array2, array3]; // last为上次运算的结果,current为数组中的当前元素 var result = array4.reduce((last, current) => { const array = []; last.forEach(par1 => { current.forEach(par2 => { array.push(par1 + "_" + par2); }); }); return array; }); console.log(result);