javascript - 使用函数式编程连接两个 JSON 对象数组,例如 SQL 连接
问题描述
考虑一下,我有以下两个对象数组:
const existingAndArchivedBookings =
[
{"booking_id":-2},
{"booking_id":-1},
{"booking_id":999}
]
const newAndExistingBookings =
[
{bookingId:-2, name: "name1"},
{bookingId:-3, name: "name1"},
{bookingId:-1, name: "namex"}
]
我想要做的是确定第二个数组中哪些预订是新的,哪些是现有的。两个数组中的任何 bookingId 都存在。第二个数组中但不是第一个数组中的任何 bookingID 都是新的。因此,解决方案的结果应该是一个数组,如下所示:
[ { bookingId: -2, existing: true, name: 'name1' },
{ bookingId: -3, existing: false, name: 'name1' },
{ bookingId: -1, existing: true, name: 'namex' } ]
我有一个解决方案(我将作为答案发布),但我认为可能有一种更有效的方法。祝你好运。
解决方案
如果您想要一个非 R 答案:您可以使用 simplemap
来迭代数据,比较两个数组中的预订 ID(带有some
),并返回一个新的对象数组。
const existingAndArchivedBookings = [{booking_id:-2},{booking_id:-1},{booking_id:999}];
const newAndExistingBookings = [{bookingId:-2, name: "name1"},{bookingId:-3, name: "name1"},{bookingId:-1, name: "namex"}];
function testBookings(arr1, arr2) {
return arr2.map(({ bookingId, name }) => {
const existing = arr1.some(obj => obj.booking_id === bookingId);
return { bookingId, existing, name };
});
}
const out = testBookings(existingAndArchivedBookings, newAndExistingBookings);
console.log(out);
推荐阅读
- sql - PostgreSQL 是否实现了多表索引?
- azure-devops - 通过 REST API 或 CLI 使用 Azure Devops 访问管道故障阶段信息
- java - 从 Fragment 将二维数组传递给 Activity(Android Studio、Java)
- c# - 覆盖共享文件中的图像
- xcode - 有什么方法可以在不使用 sudo 的情况下切换 Xcode 版本?
- javascript - 如何使用javascript中的按钮从计时器中添加和减去时间
- typescript - 在打字稿中将泛型类型具体化
- python - TypeError:“图像”对象不支持项目分配
- python - “ * 之后的 add() 参数必须是可迭代的,而不是 int”
- r - 如何将正弦变换向量转换回原始向量?