
本文介绍如何使用 JavaScript 的 map() 方法高效转换二维数组,重点讲解通过索引访问和解构赋值两种方式,将每个子数组的第二个数值元素乘以 100 并保留原结构。
本文介绍如何使用 javascript 的 `map()` 方法高效转换二维数组,重点讲解通过索引访问和解构赋值两种方式,将每个子数组的第二个数值元素乘以 100 并保留原结构。
在处理时间序列数据(如图表坐标点、金融指标等)时,常遇到形如 [[timestamp, value], ...] 的二维数组。当需要将小数形式的比率(如 0.7537)统一转为百分比显示(如 75.37),同时保持时间戳不变,Array.prototype.map() 是最简洁、函数式且不可变的安全选择。
核心思路是:对每一项子数组进行映射,提取第一个元素(时间戳/标识符)保持不变,将第二个元素(数值)乘以 100,再组合成新子数组。
以下是两种推荐实现方式:
✅ 方式一:基于索引访问(清晰直观,兼容性好)
```ts const data = [ [1262304000000, 0.7537], [1262563200000, 0.6951], [1262649600000, 0.6925] ];const percentData = data.map(subArr => [subArr[0], subArr[1] * 100]); console.log(percentData); // 输出: [[1262304000000, 75.37], [1262563200000, 69.51], [1262649600000, 69.25]]
<h4>✅ 方式二:使用数组解构(语义更强,代码更优雅)</h4> ```ts const data = [ [1262304000000, 0.7537], [1262563200000, 0.6951], [1262649600000, 0.6925] ]; const percentData = data.map(([timestamp, value]) => [timestamp, value * 100]); console.log(percentData); // 输出同上
解构语法 ([timestamp, value]) 显式声明了子数组的结构意图,提升可读性与可维护性,尤其适用于字段含义明确的场景(如 [x, y] 坐标或 [time, ratio])。
⚠️ 注意事项:
- 确保输入数组每一项均为长度 ≥ 2 的数组,否则解构可能产生 undefined,导致计算结果为 NaN;
- 若需控制小数位数(如统一保留两位小数),可在乘法后链式调用 .toFixed(2),但注意其返回字符串类型——如需数值型结果,请包裹 parseFloat() 或使用 Math.round(value * 10000) / 100;
- map() 不修改原数组,符合函数式编程原则,适合 React 等状态不可变场景。
? 总结:无论是索引访问还是解构赋值,本质都是对嵌套结构的精准投影。选择哪种方式取决于团队规范与可读性偏好;对于生产环境,建议搭配 TypeScript 类型注解(如 Array)进一步保障类型安全。










