javascript - 结合关系javascript对象
问题描述
我有两个这样的对象,
let tables=[{
"KEY_ID": "T01",
"KEY_NAME": "TABLE 1",
"SITE_ID": "JKT"
}, {
"KEY_ID": "T02",
"KEY_NAME": "TABLE 2",
"SITE_ID": "JKT"
}, {
"KEY_ID": "T03",
"KEY_NAME": "TABLE 3",
"SITE_ID": "JKT"
}];
和
let orders = [{
"KEY_ID": "T01",
"ORDER_ID": "BL/RK/D0000004",
"STATUS_DATA": 1
}, {
"KEY_ID": "T01",
"ORDER_ID": "BL/RK/D0000005",
"STATUS_DATA": 1
}, {
"KEY_ID": "T03",
"ORDER_ID": "BL/RK/D0000018",
"STATUS_DATA": 1
}];
我想将订单组合到像这个 Tabel Orders 对象这样的表对象,该怎么做?我可以使用地图功能或其他东西吗?我知道可能我必须循环太多,但没关系,不用担心性能。抱歉,我无法为结果嵌入图像或代码
解决方案
您可以从订单中查找并通过它填充表格数组,依赖于Array.reduce
一个普通的for..of
循环。这个例子假设key_id
是唯一的。
let tables=[{
"KEY_ID": "T01",
"KEY_NAME": "TABLE 1",
"SITE_ID": "JKT"
}, {
"KEY_ID": "T02",
"KEY_NAME": "TABLE 2",
"SITE_ID": "JKT"
}, {
"KEY_ID": "T03",
"KEY_NAME": "TABLE 3",
"SITE_ID": "JKT"
}], orders = [{
"KEY_ID": "T01",
"ORDER_ID": "BL/RK/D0000004",
"STATUS_DATA": 1
}, {
"KEY_ID": "T01",
"ORDER_ID": "BL/RK/D0000005",
"STATUS_DATA": 1
}, {
"KEY_ID": "T03",
"ORDER_ID": "BL/RK/D0000018",
"STATUS_DATA": 1
}];
const ordersMap = orders.reduce((acc, next) => {
if (!acc[next.KEY_ID]) acc[next.KEY_ID] = { orders: [] };
acc[next.KEY_ID].orders.push(next);
return acc;
}, {});
for (let table of tables) {
table.orders = (ordersMap[table.KEY_ID] || {}).orders || [];
}
console.log(tables);
推荐阅读
- discord.py - 一个如果需要这些权限 discord py
- python - 使用带有 VSC 的时间模块延迟文本打印会导致在一段时间后打印全文而不是一个一个地打印每个字符?
- spring-boot - SpringData JPA - JDBC 类型没有方言映射:2003
- node.js - 猫鼬模式结构
- html - 破折号中的自定义 HTML
- android - 已设置应用内购买测试,但不允许实际购买订阅
- java - 使用 Java 在真实对象中注册模拟对象
- sql - 在 Rails 数据库中存储和稍后访问 JSON 对象的最佳实践
- firebase - 为我的物理设备设置 Flutter Firebase 模拟器
- reactjs - 如何获取 React TimePicker 的值