typescript - 打字稿返回嵌套对象参考
问题描述
假设我有一个客户对象数组,每个对象都有一个发票对象数组,每个发票都有一个 invoice_items 数组。
给定 invoice_item_guid - 我想返回 1 个具有特定 GUID 的唯一 invoice_item 对象。
我不知道客户或发票,我不想创建一堆 for 循环。
例如:
顾客
客户ID
发票
invoiceid
发票项目
invoice_item_guid
invoice_item_id
invoice_item_qty
我计划做一个复合FIND之类的东西,有点像这样:
var i: invoice_item;
i = this.customers.find(c => c.invoices).find(inv => inv.invoice_items).find(item => item.invoice_item_guid === "someguid");
充其量,我得到一个客户对象 - 但我真的想更深入地钻取并得到 invoice_item 对象(而不是客户)。
解决方案
我根据您的描述制作了一个虚拟数组。
以下解决方案应该有效,但可能不是最佳的方法。
const customers = [{
customerId: 1,
invoices: [{
invoiceId: 1,
invoiceItems: [{
invoiceItemGuid: 1
}]
}]
},
{
customerId: 2,
invoices: [{
invoiceId: 2,
invoiceItems: [{
invoiceItemGuid: 2
}]
}]
}
]
const item = customers.flatMap(customer => customer.invoices).flatMap(invoice => invoice.invoiceItems).find(item => item.invoiceItemGuid === 2)
console.log(item)
推荐阅读
- join - 转置、拆分和加入 Google 表格
- python - Python如何拆分和连接列表中的字符
- oracle - Excel 宏连接到 Oracle 数据库
- java - Java 中的 Azure 应用程序功能,用于查看来自 azure 存储帐户的 blob 文件列表
- vbscript - 在运行 Selenium 脚本时在 Windows 中保持屏幕活动(不锁定)
- android - 如何让应用通知默认下拉
- c# - 更改禁用的颜色
- python - 将形状 (?,32,24,24) 的张量转换为 3D numpy 数组
- python - 如何在pytqt5中添加登录?
- android - 使用保存按钮保存活动状态。并从保存菜单中加载它