首页 > 解决方案 > 打字稿返回嵌套对象参考

问题描述

假设我有一个客户对象数组,每个对象都有一个发票对象数组,每个发票都有一个 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 对象(而不是客户)。

标签: typescript

解决方案


我根据您的描述制作了一个虚拟数组。

以下解决方案应该有效,但可能不是最佳的方法。

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)


推荐阅读