ConstElement type produced by the outer source iterable.
Element type produced by the inner source iterable.
Key type generated by the key selector functions.
Result type emitted by the selector.
Inner source iterable used to build a lookup for matching keys.
Selector producing a key for each outer element.
Selector producing a key for each inner element.
Projection receiving the current outer element and the iterable of matching inner elements.
OptionalmapFactory: MapFactory<TKey>Optional factory used to create the internal map for lookups.
A deferred iterable yielding the result of selector for every element in the outer sequence.
const result = [..._groupJoin(
[
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" }
],
[
{ userId: 1, order: "A" },
{ userId: 1, order: "B" },
{ userId: 3, order: "C" }
],
(user) => user.id,
(order) => order.userId,
(user, orders) => ({
name: user.name,
orders: [...orders].map((order) => order.order)
})
)];
console.log(result);
// [
// { name: "Alice", orders: ["A", "B"] },
// { name: "Bob", orders: [] }
// ]
or using the curried version:
const result = pipeInto(
[
{ id: 1, name: "Taylor" }
],
groupJoin(
[
{ userId: 1, order: "Order-1" },
{ userId: 2, order: "Order-2" }
],
(user) => user.id,
(order) => order.userId,
(user, orders) => ({
name: user.name,
orders: [...orders].map((order) => order.order)
})
)
);
console.log([...result]);
// [
// { name: "Taylor", orders: ["Order-1"] }
// ]
Performs a group join pairing each outer element with the group of matching inner elements.
Curried version of _groupJoin.