Anzeige

assoziatives Array auslesen


#1
Hallo,
ich habe ein assoziatives Array:
Code:
(2) […]

0: Object { Nr: "fu0010", Zaehler: 101 }

1: Object { Nr: "fu0010", Zaehler: 101 }

2: Object { Nr: "fu0011", Zaehler: 105 }

length: 3
Wie kann ich nun auslesen, welcher "Zaehler"-Wert für "fu0011" steht?
Ich habe jetzt stundenlang gegoogelt, aber irgendwie finde ich nichts, womit ich etwas anfangen kann - bin noch Anfänger.
Danke schon mal.
 

Sempervivum

Erfahrenes Mitglied
#2
Ist das gewollt, dass "fu0010" doppelt auftritt?

Da hilft wohl nur, dieses Array zu durchsuchen:
Javascript:
        var needle = "fu0011";
        var data = [
            { Nr: "fu0010", Zaehler: 101 },
            { Nr: "fu0010", Zaehler: 101 },
            { Nr: "fu0011", Zaehler: 105 }
        ];
        for (var i = 0, theindex = -1; i < data.length && theindex == -1; i++) {
            if (data[i].Nr == needle) {
                theindex = i;
            }
        }
        if (theindex != -1) console.log(theindex, data[theindex].Zaehler);
Kompakter geht es, wenn es dir möglich ist, die Struktur etwas umzuändern:
Javascript:
        var data2 = {
            "fu0010": 101,
            "fu0012": 101,
            "fu0013": 105
            };
Dann kannst Du einfach so zugreifen:
Javascript:
var zaehler = data2[needle];
 
#3
Super, danke, das hilft mir :)
Der doppelte Eintrag ist nicht gewollt, ich suche noch nach einer Möglichkeit, dass zu verhindern.
Code:
    $.each(counter, function() {
        if (this.Nr == ArtNr) {
            this.Zaehler = zaehler;
        }
    });
    counter.push({
                    Nr: ArtNr,
                    Zaehler: zaehler
                });
Im oberen Teil wird der Zähler aktualisiert, im unteren Teil wird eine neue ArtNr eingetragen (eigentlich nur, falls sie noch nicht existiert), daher die doppelten Einträge. Ich habe aber auch noch nicht all zu sehr darüber nachgedacht, wie ich das ändern kann - werde ich jetzt mal machen.
 

Quaese

Moderator
Moderator
#4
Hi,

kleine Spielerei, um doppelte Einträge zu vermeiden und bestehende zu aktualisieren:

Javascript:
counter = [
    { Nr: "fu0010", Zaehler: 101 },
    { Nr: "fu0012", Zaehler: 101 },
    { Nr: "fu0011", Zaehler: 105 }
],
ArtNr = 'fu0010',
Zaehler = 1;

((param) => counter.reduce((accu, curr) => {if (curr.Nr === param.Nr) {curr.Zaehler += param.Zaehler; accu=true} return accu;}, false) || counter.push(param))({Nr: ArtNr, Zaehler: Zaehler});
Ciao
Quaese
 
Anzeige
Anzeige