Sort Associative Array by Key
Machine Code
jckj33 at gmail.com
Tue Aug 27 20:14:21 UTC 2019
On Tuesday, 27 August 2019 at 16:25:00 UTC, Samir wrote:
> On Sunday, 25 August 2019 at 17:01:23 UTC, a11e99z wrote:
>>> auto foo = ["VXE":8, "BZP":5, "JLC":2];
>>> foo.byPair.array.sort!"a[0]<b[0]".map!"a[1]".writeln;
>
> On Sunday, 25 August 2019 at 19:03:10 UTC, JN wrote:
>> I think normal lambdas are better than these string ones:
>>
>> foo.byPair.array.sort!((a, b) => a[0] < b[0]).map!(a =>
>> a[1]).writeln;
>
> On Sunday, 25 August 2019 at 21:13:05 UTC, Paul Backus wrote:
>> You can also use names instead of numeric indices:
>>
>> foo.byPair.array.sort!((a, b) => a.key < b.key).map!(a =>
>> a.value);
>
> a11e99z, JN, Paul: Thank you all for your replies and help.
> As I've mentioned on the list before, I really struggle to
> understand how some of the std.algorithm functions such as
> `map` work when combined with things like `array`, `sort` and
> especially `zip` but really appreciate the support I find here
> on the forum.
>
> Samir
It isn't really hard:
.array() turns the range into an array, so that sort() can work.
sort() takes "callback" function to test the elements while
sorting and determine the proper position in the array.
map() select the property from each element, putting that
requested property into an array.
More information about the Digitalmars-d-learn
mailing list