用 js 实现一维数组转化为二维数组

问题

用 js 实现一维数组转化为二维数组

分析

1. for 循环 + slice 方法

使用 JavaScript 的循环和 slice 方法来将数组 [160, 20, 179, 10, -170, -20] 转化为 [[160, 20], [179, 10], [-170, -20]]。以下是一个示例代码:

const arr = [160, 20, 179, 10, -170, -20];
const result = [];

for (let i = 0; i < arr.length; i += 2) {
  result.push(arr.slice(i, i + 2));
}

console.log(result); // 输出转化后的数组

在上述代码中,通过循环遍历原始数组,每次取两个元素并使用 slice 方法将其组成一个新的子数组,然后将子数组添加到结果数组中。

最后,通过 console.log 输出转化后的数组 result。

2. flatMap 方法

用 flatMap 方法来简化将数组 [160, 20, 179, 10, -170, -20] 转换为 [[160, 20], [179, 10], [-170, -20]] 的过程。以下是使用 flatMap 的示例代码:

const arr = [160, 20, 179, 10, -170, -20];
const result = arr.flatMap((value, index, array) => {
  if (index % 2 === 0) {
    return [array.slice(index, index + 2)];
  }
  return [];
});

console.log(result); // 输出转化后的数组

在上述代码中,我们使用 flatMap 方法来遍历原始数组 arr。在回调函数中,我们检查当前元素的索引是否为偶数,如果是,则使用 slice 方法将当前元素和下一个元素组成一个子数组,并返回该子数组。如果索引为奇数,则返回一个空数组。

最后,通过 console.log 输出转化后的数组 result。

### 将一维数组转换为二维数组的方法 在 JavaScript 中,可以通过多种方法实现一维数组转换为二维数组的功能。以下是几种常见的实现方式: #### 方法 1: 使用 `for` 循环手动分组 通过指定每行的长度(即子数组的大小),可以利用循环来构建新的二维数组。 ```javascript function convertTo2DArray(arr, size) { const result = []; for (let i = 0; i < arr.length; i += size) { result.push(arr.slice(i, i + size)); } return result; } const oneDimArray = [1, 2, 3, 4, 5, 6]; console.log(convertTo2DArray(oneDimArray, 2)); // [[1, 2], [3, 4], [5, 6]] ``` 此方法的核心在于使用 `slice()` 函数按固定步长提取子数组并将其推入新数组中[^3]。 #### 方法 2: 利用 `reduce()` 进行累加处理 另一种优雅的方式是借助 `reduce()` 高阶函数完成相同的操作。 ```javascript function convertTo2DArrayReduce(arr, size) { return arr.reduce((accumulator, current, index) => { if (index % size === 0) accumulator.push([current]); else accumulator[accumulator.length - 1].push(current); return accumulator; }, []); } const oneDimArray = [7, 8, 9, 10, 11, 12]; console.log(convertTo2DArrayReduce(oneDimArray, 3)); // [[7, 8, 9], [10, 11, 12]] ``` 这种方法的关键是在每次迭代时判断当前索引是否能被 `size` 整除,从而决定创建新子数组或将元素追加到现有子数组中[^4]。 #### 方法 3: 借助库函数简化逻辑 如果项目允许引入外部依赖,则可考虑使用像 Lodash 或 Underscore.js 这样的工具库中的功能模块进一步优化代码结构。例如,在 Lodash 中有专门用于分区的 `chunk` 方法可以直接达成目标效果。 ```javascript // Assuming lodash is included via CDN or npm package. const _ = require('lodash'); const oneDimArray = ['a', 'b', 'c', 'd']; console.log(_.chunk(oneDimArray, 2)); // [['a', 'b'], ['c', 'd']] ``` 上述三种方案各有优劣,具体选用哪一种取决于实际应用场景以及个人偏好等因素影响下的权衡考量结果[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博客zhu虎康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值