【问题标题】:lodash filter deeply nested objects returning array of those objectslodash 过滤深度嵌套的对象,返回这些对象的数组
【发布时间】:2019-12-12 12:29:32
【问题描述】:

我正在尝试返回一个深深嵌套在另一个数组中的对象数组。这是一个带有数组的示例对象:

payment = {
"id": 1,
"tickets" = [{
  "id": 1,
  "ticketItems": [{item1}, {item2}, {item3}]
  },
  {"id": 2",
  "ticketItems":  [{item4}, {item5}, {item6}]
  }]}

使用 lodash 我想返回一个只有项目 1-6 的数组,没有父对象。我试过了:

var items = _.filter(payment.tickets, {'ticketItems'});

但这不会返回ticketItems 数组。我发现的所有示例都使用“id: 1”之类的条件,但我想要所有的ticketItems,而不仅仅是那些匹配条件的。

【问题讨论】:

    标签: lodash


    【解决方案1】:

    您可以使用Array.flatMap()(或lodash 的_.flatMap())并从每个tickets 对象返回ticketItems

    const payment = {"id":1,"tickets":[{"id":1,"ticketItems":[{"item1":1},{"item2":2},{"item3":3}]},{"id":2,"ticketItems":[{"item4":4},{"item5":5},{"item6":6}]}]}
    
    const result = payment.tickets.flatMap(o => o.ticketItems)
    
    console.log(result)

    与 lodash 的 _.flatMap() 相同的解决方案:

    const payment = {"id":1,"tickets":[{"id":1,"ticketItems":[{"item1":1},{"item2":2},{"item3":3}]},{"id":2,"ticketItems":[{"item4":4},{"item5":5},{"item6":6}]}]}
    
    const result = _.flatMap(payment.tickets, 'ticketItems')
    
    console.log(result)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

    【讨论】:

      猜你喜欢
      • 2019-01-29
      • 2020-09-24
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      相关资源
      最近更新 更多