2016-07-27 9 views
0

ich ein Array mit einigen Objekten wie diese gefüllt und Drucken Sie es aus mit JSON.stringifty(obj, null, '\t');Javascript bekommen Felder aus einem Array mit Objekten

gibt mir eine Ausgabe wie folgt aus:

[ 
    { 
     "title": "here's the title" 
    }, 
    { 
     "description": "this is a description" 
    } 
] 

jetzt versuche ich, zu erhalten die Daten zurück von diesem Array mit Objekten im Inneren. Mit array.map wie folgt aus:

var title = objArray.map(function(a) {return a.title;}); 

, wenn ich tun:

console.log(title); //the output looks like this 
,here's the title,,, 

Wenn ich manuell in das Array erreichen wie diese

console.log(results[0]['title']); //the output is well formatted 
here's the title 

warum das so ist und wie kann ich das bekommen Kartenfunktion, um diese zusätzlichen Kommas nicht zu meinem zurückgegebenen Wert hinzuzufügen?

+2

'map()' gibt ein Array zurück. Wenn Sie versuchen, ein Array (z. B. über 'console.log()') auszugeben, wird es zuerst implizit verbunden, als hätten Sie 'array.join()' gemacht. Die Kommas sind ein Ergebnis dieses impliziten Joins. – Utkanos

Antwort

1

Ja, weil Ihre 2 Elemente im Array sind:

{ 
    "title": "here's the title" 
} 

und

{ 
    "description": "this is a description" 
} 

aber sie haben nicht die gleichen Eigenschaften: so, wenn Sie versuchen, die Eigenschaft title in die angezeigt werden zweites Element, JS-Interpret zurückgeben undefined

0

Es wird einen Wert für alles im Array zurückgeben, so dass Sie diese erhalten e leere Werte im resultierenden Array für die Objekte, die keinen Titel haben. Sie können den Wert des Titels überprüfen, bevor Sie den Wert in der Kartenfunktion zurückgeben. Beispiel:

if (a.title) return a.title; 
Verwandte Themen