Skip to content

Add Sequence::keyBy() to produce lookup maps keyed by a given selector - #60

Merged
thekid merged 4 commits into
masterfrom
feature/key-by
Jul 26, 2026
Merged

Add Sequence::keyBy() to produce lookup maps keyed by a given selector#60
thekid merged 4 commits into
masterfrom
feature/key-by

Conversation

@thekid

@thekidthekid commented Jul 26, 2026

Copy link
Copy Markdown
Member

This pull request add a keyBy() method to the Seequence class.

Example

useutil\data\Sequence;
$users= [
['tenant' => 'example', 'jwt' => 'ey123...', 'valid' => '2027-01-01'],
['tenant' => 'platform', 'jwt' => 'ey345...', 'valid' => '2026-12-14'],
];
// Before$claims= Sequence::of($users)->toMap(fn($user) => yield$user['tenant'] => $user);
// After$claims= Sequence::of($users)->keyBy('tenant');
// Both return the following:// [// 'example' => ['tenant' => 'example', ...],// 'platform' => ['tenant' => 'example', ...],// ]

Overloads

  • keyBy('tenant') - uses the tenant field as keys and the docunents as associated values
  • keyBy(['tenant' => 'jwt']) will use the tenant field as keys and the jwt key as values
  • keyBy(fn($c) => [$c['tenant'] => $c['jwt']]) - same as above but shows the full flexibility
  • keyBy(function($c) { yield $c['tenant'] => $c['jwt']; }) - also works with generators

See also

@thekid
thekid merged commit 9082364 into masterJul 26, 2026
22 checks passed
@thekid
thekid deleted the feature/key-by branch July 26, 2026 08:57
@thekid

Copy link
Copy Markdown
MemberAuthor

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@thekid