Ankündigung

Einklappen
Keine Ankündigung bisher.

Javascript: Assoziate Array

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Javascript: Assoziate Array

    ich habe eine Klasse für Farben
    Code:
    export class Color {
        private name: string;
        private color_value: number = 0;
        private transparency: number = null;
        public static htmlColor: Array<Color> = new Array<Color>();
        // this is the factor to calculate in brighter() or lighter()
        public static SMOOTHFACTOR: number = 0.7;           
        // Internal mask for red
        private static RED_MASK = 255 << 16;
        // Internal mask for green
        private static GREEN_MASK = 255 << 8;
    
        // Internal mask for blue
        private static BLUE_MASK = 255;
    
        // Internal mask for alpha. 
        private static ALPHA_MASK = 255 << 24;
    
       ....
       public static initHTMLColors(): void {
            if ( Color.htmlColor.length === 0 ) {
                Color.htmlColor['aliceblue'] = new Color(0xF0F8FF, null, 'AliceBlue');
                Color.htmlColor['antiquewhite'] = new Color(0xFAEBD7, null, 'AntiqueWhite' );
                Color.htmlColor['aqua'] = new Color(0x00FFFF, null, 'Aqua' ); 
                Color.htmlColor['aquamarine'] = new Color(0x7FFFD4, null, 'Aquamarine' );
                Color.htmlColor['azure'] = new Color(0xF0FFFF, null, 'Azure' ); 
                Color.htmlColor['beige'] = new Color(0xF5F5DC, null, 'Beige' );
                Color.htmlColor['bisque'] = new Color(0xFFE4C4, null, 'Bisque' ); 
                Color.htmlColor['black'] = new Color(0x000000, null, 'Black' ); 
                ...
           }
       }
    }
    Die Klasse hat eine statisches Attribut für HTML Farben
    Code:
        public static htmlColor: Array<Color> = new Array<Color>();
    die über die statische Funktion initHTMLColors initialisiert wird.
    Jetzt müsste ich die Anzahl der Einträge ermitteln und über einen Index zugreifen, wie kann ich das am besten machen?

  • #2
    Soweit ich weiß kennt JavaScript keine assoziative Arrays. JavaScript kennt aber Maps, welche sich ähnlich verhalten wie Assoziative arrays.
    https://developer.mozilla.org/de/doc...al_Objects/Map

    Edit:
    Was du da hast ist denke ich ein Objekt, du könntest daher mal mit Object.keys(deinObjekt).length probieren die Anzahl der Werte auszulesen.

    Kommentar


    • #3
      Also der Code wirft bei mir lauter Fehler. Bitte keinen Müllcode ins Forum kopieren, danke.

      Kommentar


      • #4
        Ich kann ehrlich gesagt spontan nicht erkennen, welche Programmiersprache das ist. Das ist doch kein JavaScript?

        Sieht eher aus wie Java, wobei mir zumindest das export class auch nicht geläufig ist.

        Kommentar


        • #5
          Sieht für mich nach ECMAScript 2015 oder einem Superset davon aus. Aber wie gesagt hat der Code einige Fehler. Zum Beispiel ist das Array nicht assoziativ. Das ist höchstens eine Wunschvorstellung aber nicht die Realität. Man sollte seinen Code schon anhand von Fakten schreiben und nicht auf Basis von Fantasien.

          Kommentar


          • #6
            Zitat von hellbringer Beitrag anzeigen
            Also der Code wirft bei mir lauter Fehler. Bitte keinen Müllcode ins Forum kopieren, danke.
            Also bei mir läuft er einwandfrei, sogar mit Testfunktion. Deshalb verstehe ich deine Kritik nicht. Zu beachten ist allerdings, dass ich nicht die komplette Klasse angegeben habe. Es ist aber ein Unterschied ob es Müllcode ist oder ob man es gekürzter Form angibt.

            Noch ein Wort dazu, dass es angeblich keine assoziative Arrays gibt: https://www.w3schools.com/js/js_arrays.asp (Abschnitt: assoziative Arrays)

            Kommentar


            • #7
              Zitat von mermshaus Beitrag anzeigen
              Ich kann ehrlich gesagt spontan nicht erkennen, welche Programmiersprache das ist. Das ist doch kein JavaScript?

              Sieht eher aus wie Java, wobei mir zumindest das export class auch nicht geläufig ist.
              Stimmt, es war ein Fehler von mir, sry. Muss anstelle von Javascript, TypeScript heißen. Aber große Unterschiede zwischen Javascript und TypeScript sind nur maginal. Aber ich habe die initialisierung und entsprechende Funktionen auf index-based jetzt umgestellt.

              Kommentar


              • #8
                Zitat von 7-it Beitrag anzeigen
                Also bei mir läuft er einwandfrei, sogar mit Testfunktion. Deshalb verstehe ich deine Kritik nicht.
                Bei mir nicht,
                Chapeau an hellbringer gut erkannt.

                Zitat von 7-it Beitrag anzeigen
                Noch ein Wort dazu, dass es angeblich keine assoziative Arrays gibt: https://www.w3schools.com/js/js_arrays.asp (Abschnitt: assoziative Arrays)
                und genau da steht in der 3. Zeile
                JavaScript does not support arrays with named indexes.
                [offtopic]
                Ausserdem ist w3school eine private Seite auch wenn sie den Eindruck eines Standardwerkes vorgibt. Man sollte also vorsichtig mit diesen Informationen sein. Richtschnur ist die Seite von w3.org oder meinetwegen auch von mozilla.org als Browserhersteller. Nichts desto trotz steht es natürlich jedem Frei dorthin zu verlinken wo er glaubt die Informationen zu finden die er benötigt.

                Kommentar


                • #9
                  Zitat von 7-it Beitrag anzeigen
                  Also bei mir läuft er einwandfrei, sogar mit Testfunktion. Deshalb verstehe ich deine Kritik nicht. Zu beachten ist allerdings, dass ich nicht die komplette Klasse angegeben habe. Es ist aber ein Unterschied ob es Müllcode ist oder ob man es gekürzter Form angibt.
                  Nein, gekürzter (eigentlich verstümmelter), nicht funktionsfähiger Code, ist praktisch wertlos. Es ist DEINE AUFGABE ein funktionierendes Beispiel zur Verfügung zu stellen. Also mach das bitte auch. Ich habs jedenfalls nicht geschafft in einem vertretbarem Zeitaufwand deinen Code zum Laufen zu kriegen und es ist auch NICHT Aufgabe der anderen Forenteilenehmer viel Zeit darin zu investieren. DU möchtest etwas, also kümmer auch bitte DU dich darum, dass der Code, den du postest, auch läuft.

                  Es schaut für mich nach wie vor nach Fantasiecode aus. Dass "der" Code (den hier niemand kennt, da er nur bei dir existiert) läuft, ist schön für dich, aber für uns wertlos. Wir kennen ihn nicht. Der gezeigte Code läuft jedenfalls nicht und ist somit für die Problemdiskussion unbrauchbar.

                  Es spricht übrigens nichts gegen korrekt gekürzten Code. Im Gegenteil, Beispielcode sollte auf das wesentlicher reduziert sein und nicht unnötiges Zeug beinhalten. Aber er sollte lauffähig sein!

                  Zitat von 7-it Beitrag anzeigen
                  Noch ein Wort dazu, dass es angeblich keine assoziative Arrays gibt: https://www.w3schools.com/js/js_arrays.asp (Abschnitt: assoziative Arrays)
                  Richtig, es gibt keine. Steht auch in der verlinkten Seite, die du offensichtlich selber nicht gelesen hast.

                  Kommentar

                  Lädt...
                  X