Thread zwei Arrays vergleichen und doppelten Inhalt löschen (31 answers)
Opened by Matze2.pl at 2014-11-13 10:27

hlubenow
 2014-11-13 15:30
#178338 #178338
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
2014-11-13T09:27:28 Matze2.pl
Ich habe zwei Arrays die ich miteinander vergleichen will ... als ergebnis soll rauskommen, dass in @b NUR das steht was in @a NICHT steht.

Ich würde das so angehen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/perl

use warnings;
use strict;

# my @a = (1, 2, 3, 4);
# my @b = (1, 3, 2, 5, 6);

my @a = ( 1, 2, 3, 4, 5, 6, 7, 8 );
my @b = ( 12, 13, 1, 2, 3, 4, 22 );

my %h = ();
my $i;

foreach $i (@b) {
    $h{$i} = 0;
}

foreach $i (@a) {
    if (exists($h{$i})) {
        $h{$i}++;
    } 
}

my @b2 = ();
foreach $i (@b) {
    if ($h{$i} == 0) {
        push(@b2, $i);
    }
}
foreach $i (@b2) {
    print "$i\n";
}

grep ist sicher praktisch, aber ich bin nicht mit allen Möglichkeiten vertraut. Meistens mache ich sowas daher eher "von Hand".

@Matze2.pl: Sind Dir Hashes bekannt, verstehst Du mein kleines Beispiel? Ich meine damit, sonst würden wir aneinander vorbeireden, das würde Dir dann ja auch nichts bringen.

Edit: Code verbessert.
Last edited: 2014-11-13 18:12:23 +0100 (CET)

View full thread zwei Arrays vergleichen und doppelten Inhalt löschen