You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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] }

逻辑说明

  1. R.transpose:将输入的嵌套坐标数组的行列互换,2D坐标输入会输出2个分别存储所有x、y值的子数组,3D坐标输入会输出3个分别存储x、y、z值的子数组
  2. R.zipObj:将转置后的数组按顺序和['x', 'y', 'z']的键一一对应生成对象,2D坐标转置后没有第三列,不会生成多余的z属性,自动适配2/3D输入。

内容的提问来源于stack exchange,提问作者thecartesianman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:27:03