【问题标题】:Parsing json array into an array of maps in react using Lodash使用 Lodash 将 json 数组解析为地图数组
【发布时间】:2018-06-24 22:16:47
【问题描述】:

假设这就是我的 json 的样子,它包含一个数组:

{ 
  "status": {
    "time": 175
  },
  "hits": [
    {
      "key1": "value1",
      "key2": "value2"
    },
    {
      "key1": "value1",
      "key2": "value2"
    },
    {
      "key1": "value1",
      "key2": "value2"
    },
  ]
}

我想在 react 中创建一个这样的地图数组:

[ 
{mapkey1: value1, mapkey2: value2},
{mapkey1: value1, mapkey2: value2},
{mapkey1: value1, mapkey2: value2},
]

我已经有一张mapkeys 到他们在源 json 中的 xpath 的映射:

{
 mapkey1: xpath1,
 mapkey2: xpath2
 }

如何使用 Lodash 将此地图解析为另一个数组?

我知道在没有数组的情况下怎么办:

_.mapValues(
 xpathsMap,
 paths => _.get(data, paths),
);

【问题讨论】:

    标签: arrays reactjs react-redux lodash


    【解决方案1】:
    var arr = [
        {
          "key1": "value1",
          "key2": "value2"
        },
        {
          "key1": "value1",
          "key2": "value2"
        },
        {
          "key1": "value1",
          "key2": "value2"
        },
      ];
    
    var output = [];
    
    _.forEach(arr, function(obj) {
        var keys = Object.keys(obj);
        var ob = {};
    
       _.forEach(keys, function(key) {
           ob['map' + key] = obj[key];
         })
    
        output.push(ob);
    });
    
    console.log(output);
    

    这将为您提供所需的输出 -

    [
        {mapkey1: "value1", mapkey2: "value2"},
        {mapkey1: "value1", mapkey2: "value2"},
        {mapkey1: "value1", mapkey2: "value2"}
    ]
    

    【讨论】:

      【解决方案2】:

      使用Array#map 创建一个新的对象数组。使用 lodash 的 _.mapKeys() 创建您需要的对象键:

      const data = {"status":{"time":175},"hits":[{"key1":"value1","key2":"value2"},{"key1":"value1","key2":"value2"},{"key1":"value1","key2":"value2"}]}
      
      const result = data.hits.map((o) => _.mapKeys(o, (val, key) => `map${key}`));
      
      console.log(result);
      <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 2013-09-03
        • 2022-01-22
        • 1970-01-01
        • 2011-07-02
        相关资源
        最近更新 更多