多个数组笛卡尔积-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);