lodash过滤器深层嵌套的对象返回这些对象的数组

时间:2019-12-12 12:29:32

标签: lodash

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

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”之类的条件,但是我需要所有的ticketItem,而不仅仅是那些符合条件的。

1 个答案:

答案 0 :(得分:2)

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

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>