我试图返回一个深深嵌套在另一个数组中的对象数组。这是带有数组的示例对象:
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,而不仅仅是那些符合条件的。
答案 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>