2014-11-13 10 views
8
{"document": 
    {"people":[ 
    {"name":["Harry Potter"],"age":["18"],"gender":["Male"]}, 
    {"name":["hermione granger"],"age":["18"],"gender":["Female"]}, 
    ]} 
} 

Von diesem JSON Beispiel bekommen, würde Ich mag die Schlüssel bekommen wie name, age, gender für jeden Menschen.Wie alle Schlüssel in JSON-Objekt (JavaScript)

Wie geht das?

+1

Ihre JSON Struktur ist falsch zurück. Name, Alter und Geschlecht sollten einzelne Eigenschaften sein, keine Listen. Es sollte '{" Name "sein:" Harry Potter "," Alter ":" 18 "," Geschlecht ":" Männlich "}' (keine eckigen Klammern). – nbrooks

Antwort

9

Versuchen Sie, diese

var s = {name: "raul", age: "22", gender: "Male"} 
    var keys = []; 
    for(var k in s) keys.push(k); 

Hier Array-Schlüssel wird Ihre Schlüssel ["name", "age", "gender"]

12
var input = {"document": 
    {"people":[ 
    {"name":["Harry Potter"],"age":["18"],"gender":["Male"]}, 
    {"name":["hermione granger"],"age":["18"],"gender":["Female"]}, 
    ]} 
} 

var keys = []; 
for(var i = 0;i<input.document.people.length;i++) 
{ 
    Object.keys(input.document.people[i]).forEach(function(key){ 
     if(keys.indexOf(key) == -1) 
     { 
      keys.push(key); 
     } 
    }); 
} 
console.log(keys); 
+0

'Object.keys auf Nicht-Objekt aufgerufen werden kann hier sein, wenn' people' ist leer Array –

+0

Ich denke, Ihre erste Version war eine beste Antwort, brauchen nur überprüfen Array ist nicht leer. Aktuelle Version ist zu kompliziert :) –

+1

Dies ist eine gute Lösung und verhindert, dass die gleichen Schlüssel mehr als einmal hinzugefügt werden. – nbrooks

0

ES6 des Tages hierher zurückkehren;

const json_getAllKeys = data => (
    data.reduce((keys, obj) => (
    keys.concat(Object.keys(obj).filter(key => (
     keys.indexOf(key) === -1)) 
    ) 
), []) 
) 

Und ja, es kann in sehr langen eine Zeile geschrieben werden;

const json_getAllKeys = data => data.reduce((keys, obj) => keys.concat(Object.keys(obj).filter(key => keys.indexOf(key) === -1)), []) 
2

I Object.keys verwenden, die in JavaScript Object gebaut wird, wird es eine Reihe von Tasten aus gegebenen Objekt MDN Reference

var obj = {name: "Jeeva", age: "22", gender: "Male"} 
console.log(Object.keys(obj)) 
+0

Dies ist nicht die richtige Lösung zu dem, was gefragt wurde. Alles, was Sie getan haben, war das Problem zu vereinfachen und das zu lösen, was keine Hilfe sein wird. – Mikkel

+0

Oh Entschuldigung, ich bin neu, um Fragen zu beantworten. Das werde ich beim nächsten Mal beachten – Jeeva

Verwandte Themen