3 Stimmen

JavaScript. Werte aus einem assoziativen Array extrahieren

Wie kann ich die Werte aus diesem assoziativen Array in JavaScript abrufen?

Ich brauche nur die E-Mail-Adressen und nicht die Etiketten.

(
  {
    office = ("my@email.com");
    home = ("ahome@anotheremail.com");
    work = ("nothing@email.com");
  },
  {
    home = ("test@test.se");
  }
)

UPDATE : Die bevorzugte Ausgabe in JSON wäre:

{
    "data": [
        {
            "email": "my@email.com"
        },
        {
            "email": "ahome@anotheremail.com"
        },
        {
            "email": "nothing@email.com"
        },
        {
            "email": "test@test.se"
        }
    ]
}

Wir sind dankbar für alle Beiträge!

4voto

pawlik Punkte 2385

Was Sie wahrscheinlich tun wollten, ist:

var x = [{
 office: ("my@email.com"),
 home: ("ahome@anotheremail.com"),
 work: ("nothing@email.com")
},
{
 home: ("test@test.se")
}]

und:

for(var j = 0; j < x.length; j++)
{
    for(var anItem in x[j])
    {
        console.log(x[j][anItem])
    }
}

// EDIT: jedoch, das ist nicht die beste Praxis zu verwenden für in.

Vielleicht könnten Sie Ihre Datenstruktur ändern in:

var x = [[{
        value: "my@email.com",
        type: "office"
    },
    {
        value: "ahome@anotheremail.com",
        type: "home"
    },
    {
        value: "nothing@email.com",
        type: "work"
    }],
    [{
        value: "test@test.se",
        type: "home"
    }]];

und iterieren über mit:

for( var i = 0, xlength = x.length; i < xlength; i++ )
{
    for( var j=0, ylength = x[i].length; j < ylength; j++ )
    {
        console.log(x[i][j].value);
    }
}

4voto

Sapphire_Brick Punkte 1352

Hier ist ein Einzeiler:

console.log(Object.keys(assoc).map(k => assoc[k]));

wobei assoc ist Ihr assoziatives Array.

Editar

Ich habe eine bessere Antwort aquí .

1voto

Tejs Punkte 39916

Sie können über das Objekt 'foreach', um seine Eigenschaften zu erhalten:

for(var j = 0; j < mySet.length; j++)
{
    for(var propName in mySet[j])
    {
        var emailAddress = mySet[j][propName];
        // Do Stuff
    }
}

0voto

pawlik Punkte 2385

Antwort auf die bearbeitete Frage:

var ret = {data: []};

for(var j = 0; j < x.length; j++)
{
    for(var anItem in x[j])
    {
        ret.data.push({
            email: x[j][anItem]
        });
    }
}

console.log(ret);

Das Ergebnis wird aufbewahrt in ret .

0voto

Carmine Ingaldi Punkte 794

Liegt Ihre Eingabe im JSON-Format vor? Denn wenn ja, ist es die falsche Syntax. Allerdings

let _in = [
 {
   office : "my@email.com",
   home : "ahome@anotheremail.com",
   work : "nothing@email.com",
 },
 {
   home : "test@test.se"
 }
]

let _out = []
_in.forEach( record => {  
   _out =  _out.concat(Object.values(record).map(x => new Object({email : x})))
})

console.log(_out)

für jeden Datensatz habe ich Werte extrahiert und in ein Objekt mit dem Attribut "email" "gepackt", dann habe ich alle diese Arrays aus dem ursprünglichen Array von Datensätzen erhalten zusammengeführt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X