使用Ramda实现二维/三维嵌套数组转x/y/z属性对应数组对象
实现方案
使用Ramda内置工具函数组合即可完成需求,核心逻辑仅需一行:
import * as R from 'ramda' const coordsTranspose = R.pipe( R.transpose, R.zipObj(['x', 'y', 'z']) )
测试验证
和你给出的示例输入完全匹配:
// 2D测试 const inputData2d = [ [-1, 4], [3, 6], [9, -8], ] console.log(coordsTranspose(inputData2d)) // 输出:{ x: [-1, 3, 9], y: [4, 6, -8] } // 3D测试 const inputData3d = [ [-1, 4, 5], [3, 6, 2], [9, -8, 5], ] console.log(coordsTranspose(inputData3d)) // 输出:{ x: [-1, 3, 9], y: [4, 6, -8], z: [5, 2, 5] }
逻辑说明
R.transpose:将输入的嵌套坐标数组的行列互换,2D坐标输入会输出2个分别存储所有x、y值的子数组,3D坐标输入会输出3个分别存储x、y、z值的子数组R.zipObj:将转置后的数组按顺序和['x', 'y', 'z']的键一一对应生成对象,2D坐标转置后没有第三列,不会生成多余的z属性,自动适配2/3D输入。
内容的提问来源于stack exchange,提问作者thecartesianman
相关产品推荐
相关产品推荐

