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

如何在不指定query和metrics内部键的情况下扁平化自定义JS数据集?

扁平化嵌套JS数据集(无硬编码内部键)

给定如下JS数据集:

{ 
  name: "demo", 
  trials: 25, 
  data: [ 
    { 
      query: {planner: "RRT", request: "jc", robot: "ur5"}, 
      metrics: {time: [3,4], length: [32, 33]} 
    }, 
    { 
      query: {planner: "EST", request: "oc"}, 
      metrics: {time: [6, 8, 9], clearance: [0.7, 0.8, 0.9], success: [1, 0, 1]} 
    } 
  ] 
}

需要在不指定query和metrics对象内部键的前提下,将其扁平化为如下格式:

[ 
  {name: "demo", trials: 25, planner: "RRT", robot: "ur5", request: "jc", time: 3, length: 32}, 
  {name: "demo", trials: 25, planner: "RRT", robot: "ur5", request: "jc", time: 4, length: 33}, 
  {name: "demo", trials: 25, planner: "EST", request: "oc", time: 6, clearance: 0.7, success: 1}, 
  {name: "demo", trials: 25, planner: "EST", request: "oc", time: 8, clearance: 0.8, success: 0}, 
  {name: "demo", trials: 25, planner: "EST", request: "oc", time: 9, clearance: 0.9, success: 1} 
]

要求优先采用一行实现方案,代码将集成到Observable Notebooks中。补充说明:metrics对象始终为{ attribute: number[] }格式,同一metrics对象内的数组长度一致。


一行实现方案
const flattenData = obj => obj.data.flatMap(d => Object.values(d.metrics)[0]?.map((_, i) => ({...obj, ...d.query, ...Object.fromEntries(Object.entries(d.metrics).map(([k, arr]) => [k, arr[i]]))})) || []);

代码说明
  1. 遍历展开data项:用flatMap处理data数组的每个元素,同时直接展开最终生成的结果数组
  2. 确定循环基准长度:通过Object.values(d.metrics)[0]获取metrics中的第一个数组,以它的长度作为循环次数的基准(符合“同一metrics内数组长度一致”的前提)
  3. 构建单条扁平对象:
    • 展开原对象的顶层属性(name、trials)
    • 展开当前data项的query所有键值对
    • 遍历metrics的键值对,对每个键取对应数组的第i个元素,用Object.fromEntries转换为键值对对象后展开
  4. 空值兼容:如果metrics为空,返回空数组避免报错

示例调用
const input = { name: "demo", trials: 25, data: [ { query: {planner: "RRT", request: "jc", robot: "ur5"}, metrics: {time: [3,4], length: [32, 33]} }, { query: {planner: "EST", request: "oc"}, metrics: {time: [6, 8, 9], clearance: [0.7, 0.8, 0.9], success: [1, 0, 1]} } ] };
console.log(flattenData(input));

输出结果完全符合需求,可直接在Observable Notebooks中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:22:54