js 多个二维数组 列合并
时间: 2023-09-10 11:14:19 浏览: 112
如果你有多个二维数组,想要将它们按列合并,可以使用以下代码:
```javascript
function mergeArrays(arrays) {
if (!Array.isArray(arrays) || !arrays.length) {
return [];
}
const maxLength = Math.max(...arrays.map(arr => arr.length));
const result = Array.from({ length: maxLength });
for (let i = 0; i < maxLength; i++) {
result[i] = [].concat(...arrays.map(arr => arr[i] || []));
}
return result;
}
```
这个函数接受一个数组参数 `arrays`,其中包含多个二维数组。函数返回一个按列合并的新数组。如果 `arrays` 参数不是数组或为空数组,则返回空数组。
函数中使用了 `Math.max()` 方法和 `Array.from()` 方法来获取最长的数组长度,并创建一个新数组 `result` 来存储结果。接着使用 `for` 循环以及 `concat()` 方法来将每个数组的每一列按顺序合并到 `result` 数组中。
下面是一个使用示例:
```javascript
const arr1 = [[1, 2], [3, 4], [5, 6]];
const arr2 = [[7, 8], [9, 10]];
const arr3 = [[11, 12]];
const merged = mergeArrays([arr1, arr2, arr3]);
console.log(merged);
// Output: [[1, 2, 7, 8, 11, 12], [3, 4, 9, 10, undefined, undefined], [5, 6, undefined, undefined, undefined, undefined]]
```
在这个示例中,我们将三个二维数组按列合并到一个新的二维数组 `merged` 中。注意,如果某个输入数组的长度比其他数组短,那么在合并时会自动用 `undefined` 填充缺失的值。
阅读全文