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

Từ ví dụ JSON này, tôi muốn để có được các phím như name, age, gender cho mỗi người.Làm thế nào để có được tất cả quan trọng trong JSON đối tượng (javascript)

Cách thực hiện việc này?

+1

cấu trúc JSON của bạn không đúng. Tên, tuổi và giới tính phải là các thuộc tính đơn lẻ, không phải là danh sách. Nó phải là '{" tên ":" Harry Potter "," tuổi ":" 18 "," giới tính ":" Nam "}' (không có dấu ngoặc vuông). – nbrooks

Trả lời

9

Hãy thử

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

Đây phím mảng này sẽ trả lại chìa khóa của bạn ["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 được gọi là không đối tượng' có thể ở đây, nếu' người' là mảng trống –

+0

Tôi nghĩ rằng phiên bản đầu tiên của bạn là câu trả lời hay nhất, chỉ cần mảng kiểm tra không trống. Phiên bản hiện tại quá phức tạp :) –

+1

Đây là giải pháp tốt và ngăn các khóa giống nhau được thêm nhiều hơn một lần – nbrooks

0

ES6 trong ngày ở đây;

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

Và có thể viết bằng một dòng rất dài;

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

tôi sử dụng Object.keys được xây dựng vào Object JavaScript, nó sẽ trả về một mảng các phím từ đối tượng nhất định MDN Reference

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

Đây không phải là giải pháp đúng cho những gì được hỏi. Tất cả những gì bạn làm là đơn giản hóa vấn đề và giải quyết vấn đề đó, điều đó sẽ không giúp được gì – Mikkel

+0

Xin lỗi, tôi mới trả lời câu hỏi. Tôi sẽ ghi nhớ điều đó trong lần sau – Jeeva

Các vấn đề liên quan