如何获取JSON对象中的所有键(javascript)

Hik*_*ndo 25 javascript json

{"document":
  {"people":[
    {"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
    {"name":["hermione granger"],"age":["18"],"gender":["Female"]},
  ]}
}
Run Code Online (Sandbox Code Playgroud)

从这个JSON例子,我想拿到钥匙,例如name,age,gender每个人.

这该怎么做?

Jee*_*eva 39

我使用Object.keysJavaScript内置的内容,它将从给定的对象MDN Reference返回一个键数组

var obj = {name: "Jeeva", age: "22", gender: "Male"}
console.log(Object.keys(obj))
Run Code Online (Sandbox Code Playgroud)

  • 这不是所问问题的正确解决方案。你所做的只是简化问题并解决它,这没有任何帮助 (2认同)
  • 哦,抱歉,我是新手,刚开始回答问题。下次我会记住这一点 (2认同)
  • FWIW:接受的解决方案也没有回答这个问题。 (2认同)

Rah*_*air 30

试试这个

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

这里的键数组将返回你的键 ["name", "age", "gender"]


Bat*_*eam 14

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);
Run Code Online (Sandbox Code Playgroud)


use*_*453 5

当天的ES6;

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

是的,它可以写成很长的一行;

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

编辑:如果输入是对象数组类型,则返回所有一阶键