Thread Array Elemente vergleichen und speichern
(9 answers)
Opened by PETER_PAN2009 at 2009-09-03 13:31
Du musst schon alle elemene des einen Arrays mit allen elemnten des anderen Arrays vergleichen.
Etwa so: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 sub compare_arrays { my ($first, $second) = @_; my @tmp; for my $elm (@$first) { if(defined($elm) && grep{defined($_) && $elm eq $_}@$second) { push(@tmp,$elm); } } return @tmp; } Es werden dabei aber auch doppelte Einträge aus Array "$first" übernommen. Willst du das nicht, brauchst du einen Hash in dem du gefundenen Doppelte speicherst: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 sub compare_arrays { my ($first, $second) = @_; my %found; my @tmp; for my $elm (@$first) { if(defined($elm) && grep{defined($_) && $elm eq $_}@$second && !$found{$elm}) { push(@tmp,$elm); $found{$elm}++; } } return @tmp; } Das kann man dann auch einfacher schreiben: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sub compare_arrays { my ($first, $second) = @_; my %found=map{($_,1)}@$first; my @tmp; for my $elm (@$second) { if(defined($elm) && $found{$elm}) { push(@tmp,$elm); } } return @tmp; } |