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

在React中使用Lodash将JSON数组解析为Map数组

使用Lodash将JSON数组转换为目标Map数组(React场景)

没问题,这其实就是把你已经掌握的非数组场景逻辑,套用到数组遍历里就行,用Lodash的_.map配合_.mapValues和_.get就能轻松实现需求,具体方案如下:

核心思路

我们需要遍历原始JSON中的hits数组,对数组里的每一个对象,用你已有的映射表(mapkey对应源XPath)来生成目标对象,最终把这些目标对象组合成新的数组。

完整代码示例

import _ from 'lodash';

// 你的原始JSON数据
const rawData = { 
  "status": { "time": 175 }, 
  "hits": [ 
    { "key1": "value1", "key2": "value2" }, 
    { "key1": "value1", "key2": "value2" }, 
    { "key1": "value1", "key2": "value2" } 
  ] 
};

// 你持有的mapkey与源XPath映射表
const xpathMapping = { 
  mapkey1: 'key1', 
  mapkey2: 'key2' 
};

// 转换逻辑
const targetArray = _.map(rawData.hits, (hitItem) => {
  // 对每个hit对象,复用非数组场景的映射逻辑
  return _.mapValues(xpathMapping, (path) => _.get(hitItem, path));
});

// 输出结果就是你要的目标数组
console.log(targetArray);

代码解释

  • _.map(rawData.hits, ...):遍历原始数据中的hits数组,对每一个元素(也就是每个hitItem)执行后续转换逻辑
  • 内部的_.mapValues(xpathMapping, (path) => _.get(hitItem, path)):和你熟悉的非数组场景写法几乎一致,只是把数据源从整个rawData换成了数组里的单个hitItem。这里的_.get非常灵活,哪怕你的XPath是嵌套路径(比如'some.nested.key')也能正确取值,完全适配复杂的源数据结构。

如果你的映射表中的XPath是基于整个原始数据而非单个hit对象,只需要把_.get的第一个参数换成rawData即可,但根据你的需求描述,显然是每个hit对应一个目标对象,所以上面的代码完全符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:24:48