Thread overview |
---|
November 10, 2020 canFind all elements in a array. | ||||
---|---|---|---|---|
| ||||
Hi All, Request your help, the below code output's as below hence request your help on hot to get the output as below(Required Output). Output DEV Cluster QAS Cluster Required Output DEV Cluster DEV Cluster DEV Cluster QAS Cluster Code import std.container.array; import std.stdio: writeln; import std.algorithm: canFind; import std.typecons: Tuple, tuple; void main () { Array!string data1; Array!(Tuple!(string,string)) data2; Array!string rs; data1.insertBack("DEV Systems"); data1.insertBack("DEV Systems"); data1.insertBack("DEV Systems"); data1.insertBack("QAS Systems"); data2.insertBack(tuple("DEV Systems","DEV Cluster")); data2.insertBack(tuple("QAS Systems","QAS Cluster")); foreach(i; data2[]) { if(data1[].canFind(i[0])) { writeln(i[1]); } } } From, Vino.B |
November 10, 2020 Re: canFind all elements in a array. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vino | On Tuesday, 10 November 2020 at 08:19:15 UTC, Vino wrote: > foreach(i; data2[]) { > if(data1[].canFind(i[0])) { > writeln(i[1]); > } > } This is iterating over all the elements in data2 and outputting some of them, so the output will never be longer than data2. It looks like you want to iterate over data1. Something like this: foreach(i; data1[]) { auto result = data2[].find!((p, x) => p[0] == x)(i); if (!result.empty) writeln(result.front[1]); } However, you could also use an associative array for data2: string[string] data2 = [ "DEV Systems": "DEV Cluster", "QAS Systems": "QAS Cluster", ]; foreach (i; data1[]) { if (auto v = i in data2) writeln(*v); } The "in" operator returns a pointer to the value in data2 at index "i", or else a null pointer. See more info here: https://ddili.org/ders/d.en/aa.html https://dlang.org/spec/hash-map.html |
November 10, 2020 Re: canFind all elements in a array. | ||||
---|---|---|---|---|
| ||||
Posted in reply to sarn | On Tuesday, 10 November 2020 at 09:47:06 UTC, sarn wrote:
> On Tuesday, 10 November 2020 at 08:19:15 UTC, Vino wrote:
>> [...]
>
> This is iterating over all the elements in data2 and outputting some of them, so the output will never be longer than data2.
>
> [...]
Hi Sarn,
Thank you very much
|
Copyright © 1999-2021 by the D Language Foundation