Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-02-2006, 13:48   #1 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
arrays vergleichen?

hi,

ich möchte gerne alle werte eines arrays auf das vorhendsein in einem anderen array testen.

beispiel:

arr1 = ["wert1","wert2","wert3"]
arr2 = ["wert2","wert3","wert2"]

im arr2 fehlt der wert1.
Das möchte ich gerne durch ein script herausfinden können.

Bedingung ist, daß die Werte eine beliebige Reihenfolge in den Arrays haben können.

Kann mir da jemand helfen?
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 01-02-2006, 13:55   #2 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
PHP-Code:
function in_array(needle:Array, haystack:Array) {
var 
fehlend:Array = new Array();
for(var 
i:Number 0needle.lengthi++) {
     var 
ok:Number 0;
     for(var 
z:Number 0haystack.lengthz++) {
          
ok += (haystack[z] == needle[i])?1:0;
     }
     if(
ok == 0) {
          
fehlend.push(needle[i]);
}
return 
fehlend;

Hoffe, das funktioniert!?
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 01-02-2006, 14:09   #3 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
danke,

das schmeißt mir bis jetzt immer nur einen wert raus.
okay, auf mein beispiel bezogen ist es das, was ich brauche,
praktisch gesehen könnte es aber auch so sein:

arr1 = ["wert1","wert2","wert3","wert4"]
arr2 = ["wert2","wert3","wert2"]

dann würde mir das script nur den wert 4 ausgeben, allerdings nicht den wert1.

scheinar funktioniert das "push" irgendwie nicht oder so.
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 01-02-2006, 14:14   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!

Doch, funzt. Da fehlt nur eine Klammer:
PHP-Code:
var arr1 = ["wert1""wert2""wert3""wert4"];
var 
arr2 = ["wert2""wert3""wert2"];
//
function in_array(needle:Array, haystack:Array) {
    var 
fehlend:Array = new Array();
    for (var 
0i<needle.lengthi++) {
        var 
ok:Number 0;
        for (var 
0z<haystack.lengthz++) {
            
ok += (haystack[z] == needle[i]) ? 0;
        }
        if (
ok == 0) {
            
fehlend.push(needle[i]);
        }
    }
    return 
fehlend;
}
trace(in_array(arr1arr2)); 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 01-02-2006, 14:19   #5 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Verdammt... ^^
kommt vom *schnelleralsFragerschreibenwollen*
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 01-02-2006, 16:16   #6 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hier noch eine Variante.
Sollte auch funktionieren.

PHP-Code:
var arr1:Array = ["wert1""wert7""wert1""wert6""wert1""wert5"];
var 
arr2:Array = ["wert9""wert1""wert4""wert2""wert6"];
//
function werteCheck(a1:Array, a2:Array):Array {
    var 
_a1:Array = a1;
    var 
_a2:Array = a2.slice();
    for (var 
j in _a2) {
        for (var 
i in _a1) {
            if (
_a2[Number(j)] === _a1[Number(i)]) {
                
_a2.splice(Number(j), 1);
                
j--;
            }
        }
    }
    return 
_a2;
}
//
trace(werteCheck(arr1arr2)); 
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 01-02-2006, 17:37   #7 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
drei gleichheitszeichen hintereinander?? wow :-)

ich probiere das morgen mal aus.

das andere script funzte zwarauch schon, allerdings nur mit normalen arrays.
scheinbar habe ich irgendwelche probleme mit meinen arrays.
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 01-02-2006, 22:36   #8 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Eine überflüssige Zeile entfernt.

PHP-Code:
var arr1:Array = ["wert1"5"wert1""test""wert2""wert5"];
var 
arr2:Array = ["wert10""wert1""wert4""5""wert6"];
//
function werteCheck(a1:Array, a2:Array):Array {
    var 
_a2:Array = a2.slice();
    for (var 
j in _a2) {
        for (var 
i in a1) {
            if (
_a2[Number(j)] === a1[Number(i)]) {
                
_a2.splice(Number(j), 1);
                
j--;
            }
        }
    }
    return 
_a2;
}
//
trace(werteCheck(arr1arr2)); 

.



Info zur Funktionsweise:

Ein Array wird kopiert und Position für Position mit
dem anderen Array verglichen.
Die Werte, die in beiden Arrays vorkommen,
werden aus der Kopie gelöscht.
Was übrig bleibt sind also die Werte die nicht in
beiden Arrays vorhanden sind.

Die "===" bedeuten, dass die Werte in den Arrays auch
vom Datentyp her gleich sein müssen.
Eine String "5" ist also ungleich einer 5 vom Typ Number.



.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------

Geändert von thebiz (01-02-2006 um 22:50 Uhr)
thebiz ist offline   Mit Zitat antworten
Alt 02-02-2006, 18:34   #9 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
geile sache!
vielen dank
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 17-06-2006, 18:42   #10 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
Zitat:
Zitat von thebiz
Info zur Funktionsweise:

Ein Array wird kopiert und Position für Position mit
dem anderen Array verglichen.
Die Werte, die in beiden Arrays vorkommen,
werden aus der Kopie gelöscht.
Was übrig bleibt sind also die Werte die nicht in
beiden Arrays vorhanden sind.
Das stimmt so nicht ganz:
Deine Funktion gibt die Werte zurück, die in Array 2, aber NICHT in Array 1 vorkommen.
Werte, die nur in Array 1 vorkommen, werden nicht zurückgegeben.

Trotzdem ein schönes Ding!

Grüssle,
quasi
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono ist offline   Mit Zitat antworten
Alt 17-06-2006, 19:39   #11 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Stimmt, ich habe "ein Array wird kopiert"
geschrieben, statt "Array 2 wird kopiert".
Gut aufgepasst!
Danke schön.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 18-06-2006, 18:43   #12 (permalink)
Minispiele-Bäcker
 
Benutzerbild von Derm
 
Registriert seit: Jul 2004
Ort: In Dermstadt
Beiträge: 64
@thebiz: was bedeutet der unterstrich, der manchmal vor dem parameternamen steht und manchmal nicht?
Derm ist offline   Mit Zitat antworten
Alt 18-06-2006, 19:22   #13 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Der Unterstrich hat in meinem Skript keine
besondere Bedeutung. Ist reine Willkür.

Allgemein:
Eine Variable darf halt nur mit "_" oder "$" oder
einem Buchstaben (a-z, A-Z) beginnen.
Mit einer Zahl darf eine Variable nicht beginnen.

In Flash fangen Eigenschaften mit einem
Unterstrich (engl. Underscore) an.
z.B.: _width, _x, _alpha usw.
Muss man so nicht machen, kann man aber.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele