match/consolidate 两个具有关系的数据数组的最简单方法是什么?
What is the easiest way to match/consolidate two arrays of data that have relationships?
假设我有两个用于票务活动的数据数组。一位是与会者:
[
{name: 'Jack', ticket_code: 'iGh4rT'},
{name: 'Lisa', ticket_code: 'it1ErB'}
]
另一个是门票:
[
{code: 'iGh4rT', name: 'General Admission'},
{code: 'it1ErB', name: 'VIP'}
]
现在假设我想像这样显示 table:
姓名
票名
杰克
普通录取
丽莎
贵宾
我正在努力有效地做到这一点。我可以用一个数组显示 table 没问题,像这样:
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
我需要以某种方式 'query' 门票数组与来自特定人员的与会者数组的代码,获取门票名称,并替换门票名称而不是代码。
使用 SQL 这样的事情很容易,但是是否能够“查询”数组并获得特定的 属性?我应该用所需的信息构建一个全新的数组吗?适用于大型无序数据集的最佳方法是什么?
您可以将其中一个数组作为对象,并将代码作为对象的键,并将另一个数组与所需数据和对象中先前存储的数据进行映射。
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);
试试这个:
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);
假设我有两个用于票务活动的数据数组。一位是与会者:
[
{name: 'Jack', ticket_code: 'iGh4rT'},
{name: 'Lisa', ticket_code: 'it1ErB'}
]
另一个是门票:
[
{code: 'iGh4rT', name: 'General Admission'},
{code: 'it1ErB', name: 'VIP'}
]
现在假设我想像这样显示 table:
姓名 | 票名 |
---|---|
杰克 | 普通录取 |
丽莎 | 贵宾 |
我正在努力有效地做到这一点。我可以用一个数组显示 table 没问题,像这样:
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
我需要以某种方式 'query' 门票数组与来自特定人员的与会者数组的代码,获取门票名称,并替换门票名称而不是代码。
使用 SQL 这样的事情很容易,但是是否能够“查询”数组并获得特定的 属性?我应该用所需的信息构建一个全新的数组吗?适用于大型无序数据集的最佳方法是什么?
您可以将其中一个数组作为对象,并将代码作为对象的键,并将另一个数组与所需数据和对象中先前存储的数据进行映射。
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);
试试这个:
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);