2016-06-18 10 views
1

Ich habe ein Array, dessen Elemente in String-Format, wie folgt aus:Wie erstellt man ein Array von Objekten aus einem bestehenden Array in Javascript?

somearray = ["abc", "pqr", "xyz"] 

Ich brauche ein Objekt aus dieser Array, dessen Variable I als var newobject = {} erklärt haben zu schaffen. Ich versuchte dies:

var newobject = {}; 
var index = 0; 
somearray.forEach(function() { 
    newobj = { 
     name : somearray[index] 
    }; 
    index++; 
}); 

Dies ein Objekt schafft, sondern nur aus der letzten Zeichenfolge in dem Array (somearray)

Wenn statt

newobj = { 
    name : somearray[index] 
}; 

I

newobj[index] = { 
    name : somearray[index] 
}; 
schreiben

die Objekte heißen 0,1,2. Ich möchte nicht, dass dies passiert, und ich möchte auch nichts anderes an seinem Platz haben. Gibt es keinen Weg, wie wir die Push-Methode für Arrays verwenden?

+1

Was Sie genau erreichen wollen? Ein Objekt hat immer einen Schlüssel für jeden Wert. – Schlaus

+0

Was möchten Sie als Schlüssel und Werte des Objekts? – ddsnowboard

+0

Bitte zeigen Sie uns, wie das erwartete Ergebnis aussehen soll (als JSON) – Bergi

Antwort

3

Einfache Lösung mit Array.forEach und Array.push Funktionen:

var somearray = ["abc", "pqr", "xyz"], objects = []; 

somearray.forEach((v) => objects.push({name: v}));  
console.log(JSON.stringify(objects, 0, 4)); 

Oder das gleiche mit Array.map Funktion:

var somearray = ["abc", "pqr", "xyz"], objects; 
objects = somearray.map((v) => ({name: v})); 

Der Ausgang:

[ 
    { 
     "name": "abc" 
    }, 
    { 
     "name": "pqr" 
    }, 
    { 
     "name": "xyz" 
    } 
] 
0

Verwenden Sie einfach Schlüssel-Wert-Notation:

var newobject = {}; 
 
var somearray = ["abc", "pqr", "xyz"] ; 
 
somearray.forEach(function(x,i){ 
 
    newobject[i]=x; 
 
}) 
 
console.log(newobject);

+1

Warum' .map() '? Sie werfen nur das resultierende Array von "undefined" weg. Entweder '.forEach()' oder '.reduce()' würde mehr Sinn ergeben. –

+0

@squint Sind Sie sehr besorgt über das geworfene Array? Ich benutze es, weil es kürzer ist ... – nicael

+1

Ja, es könnte wie 'newObj = irgendeinarray.reduce ((p, c, i) => (p [i] = c, p), {});' – Redu