【问题标题】:What is the easiest way to match/consolidate two arrays of data that have relationships? [duplicate]匹配/合并两个具有关系的数据数组的最简单方法是什么? [复制]
【发布时间】:2021-06-17 05:40:40
【问题描述】:

假设我有两个用于票务活动的数据数组。一是与会者:

[
{name: 'Jack', ticket_code: 'iGh4rT'},
{name: 'Lisa', ticket_code: 'it1ErB'}
]

另一个是门票:

[
{code: 'iGh4rT', name: 'General Admission'},
{code: 'it1ErB', name: 'VIP'}
]

现在说我想显示这样的表格:

Name Ticket Name
Jack General Admission
Lisa VIP

我正在努力有效地做到这一点。我可以显示一个带有一个数组的表格没有问题,如下所示:

    for (let i = 0; i < attendees.length; i++){
        const row = `<tr>
                        <td>${attendees[i].name}</td>
                        <td>${attendees[i].ticket_code}</td>
                    </tr>`
    document.getElementById('TableBody').innerHTML += row

我需要以某种方式使用该特定人员的参加者数组中的代码“查询”票证数组,获取票证名称,并替换票证名称而不是代码。

使用 SQL 时,这样的事情很容易,但是否能够“查询”一个数组并获得一个特定的属性?我应该用所需的信息构建一个全新的数组吗?适用于大型无序数据集的最佳方法是什么?

【问题讨论】:

  • 您可以使用键为ticket_codecode 的对象(通常是哈希表)。该值可以是名称。然后,搜索应该会更容易,因为您只需执行此 ticketsObj[code] 即可获得名称。

标签: javascript arrays json database-design


【解决方案1】:

您可以将其中一个数组作为对象,并将代码作为对象的键,并将另一个数组与想要的数据和对象中先前存储的数据进行映射。

const
    attendees = [{ name: 'Jack', ticket_code: 'iGh4rT' }, { name: 'Lisa', ticket_code: 'it1ErB' }],
    tickets = [{ code: 'iGh4rT', name: 'General Admission' }, { code: 'it1ErB', name: 'VIP' }],
    ticketsByCode = Object.fromEntries(tickets.map(o => [o.code, o])),
    table = attendees.map(({ name, ticket_code }) => [name, ticketsByCode [ticket_code].name]);

console.log(table);

【讨论】:

    【解决方案2】:

    试试这个:

    let a = [
      {name: 'Jack', ticket_code: 'iGh4rT'},
      {name: 'Lisa', ticket_code: 'it1ErB'}
    ];
    
    let b = [
      {code: 'iGh4rT', name: 'General Admission'},
      {code: 'it1ErB', name: 'VIP'}
    ];
    
    let c = b.map(item => {
        return {
            tiketName: item.name,
            ...a.find(itemA => itemA.ticket_code == item.code)
        }
    });
    
    console.log(c);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 2014-04-01
      • 2013-09-13
      • 1970-01-01
      • 2015-12-23
      • 2019-08-17
      • 1970-01-01
      相关资源
      最近更新 更多