使用 lodash 透视数据

Sum*_*eja 1 javascript arrays json lodash

我需要最好使用 lodash 将 init 数组转换为最终数组。

initArray = [
   {
      "date":"2017-08-15",
      "data":[
         {
            "color":"orange",
            "count":100
         },
         {
            "color":"green",
            "count":101
         }
      ]
   },
   {
      "date":"2017-08-14",
      "data":[
         {
            "color":"orange",
            "count":102
         },
         {
            "color":"green",
            "count":103
         }
      ]
   }
]

finalArray = [
   {
      "color":"orange",
      "data":[
         100,
         102
      ]
   },
   {
      "color":"green",
      "data":[
         101,
         103
      ]
   }
]
Run Code Online (Sandbox Code Playgroud)

ptp*_*son 5

这种方式似乎对我来说 lodash 调用有意义。

// var _ = require('lodash')

initArray = [
   {
      "date":"2017-08-15",
      "data":[
         {
            "color":"orange",
            "count":100
         },
         {
            "color":"green",
            "count":101
         }
      ]
   },
   {
      "date":"2017-08-14",
      "data":[
         {
            "color":"orange",
            "count":102
         },
         {
            "color":"green",
            "count":103
         }
      ]
   }
]

result = _(initArray)
    //.map('data')
    //.flatten()
    .flatMap('data') // instead of .map('data').flatten()
    .groupBy('color')
    .map((item, key) => ({
        color: key,
        count: _.map(item, 'count')
    }))
    .value()

console.log(result)
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 您可以将 `map('data').flatten()` 更改为 `flatMap('data')`。 (2认同)