用js 写一个二维数组的笛卡尔积算法
时间: 2024-03-14 13:42:47 浏览: 52
好的,下面是用 JavaScript 实现二维数组的笛卡尔积算法的代码:
```javascript
function cartesianProduct(arr) {
return arr.reduce(function(a, b) {
return a.map(function(x) {
return b.map(function(y) {
return x.concat(y);
})
}).reduce(function(a, b) { return a.concat(b) }, []);
}, [[]]);
}
// 示例
var arr = [[1, 2], [3, 4]];
console.log(cartesianProduct(arr)); // [[1, 3], [1, 4], [2, 3], [2, 4]]
```
这个算法接受一个二维数组 `arr` 作为参数,返回一个新的二维数组,其中包含了所有可能的组合方式。我们使用 `reduce()` 函数迭代地将每个子数组与前面的组合,最终得到笛卡尔积。
相关问题
使用笛卡算法将二维数组处理成数组对象
好的,让我来解答您的问题。
使用笛卡尔算法将二维数组处理成数组对象,可以按照以下步骤进行:
1. 定义一个空的数组对象,用于存储处理后的结果。
2. 使用两层循环遍历二维数组,将每个元素转换为数组对象的一个属性。
3. 在循环中,使用对象的属性名来表示每个元素的索引,将其对应的值存储为属性的值。
4. 将每个构建好的对象添加到数组对象中。
5. 循环结束后,返回处理后的数组对象。
下面是一个 JavaScript 实现的示例代码:
```javascript
function cartesianToObjArray(arr) {
const objArr = [];
for (let i = 0; i < arr.length; i++) {
const obj = {};
for (let j = 0; j < arr[i].length; j++) {
obj[j] = arr[i][j];
}
objArr.push(obj);
}
return objArr;
}
```
这个函数接受一个二维数组作为参数,返回处理后的数组对象。您可以根据需要进行修改和优化。
阅读全文