lodash - 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”之类的条件,但我想要所有的票项,而不仅仅是那些匹配条件的。
解决方案
您可以使用Array.flatMap()
(或 lodash's _.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's 相同的解决方案_.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>
推荐阅读
- mongodb - 如何将 Mongo DB 与 Angular Dart 连接起来?
- python - mitmproxy 独立脚本?
- android - 在 Android 中使用自定义区域设置膨胀视图
- c# - “可重试”请求和 CancellationToken/CancellationTokenSource
- android - 如何在 Android 中设计重叠元素?
- c# - 双向映射
- cmake - Cmake sub_directory,需要构建libs依赖项
- javascript - 如何从应用程序/八位字节流数据创建文件?
- netlogo - 将海龟移动到具有 xy 坐标的特定补丁 netlogo
- javascript - 使用 HTML 和 CSS 的导航栏中的子菜单大小