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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/26901971/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-22 23:30:22  来源:igfitidea点击:

How to get all key in JSON object (javascript)

javascriptjson

提问by Hikaru Shindo

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

From this JSON example, I would like to get the keys such as name, age, genderfor each people.

从这个JSON例子,我想拿到钥匙,例如nameagegender每个人。

How to do this?

这该怎么做?

采纳答案by Rahul G Nair

Try this

尝试这个

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

Here keys array will return your keys ["name", "age", "gender"]

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

回答by Jeeva

I use Object.keyswhich is built into JavaScript Object, it will return an array of keys from given object MDN Reference

我使用Object.keys内置于 JavaScript 对象中的它,它将从给定的对象返回一组键MDN 参考

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

回答by BatScream

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);

回答by user3487453

ES6 of the day here;

今天的 ES6 在这里;

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

And yes it can be written in very long one line;

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

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

EDIT: Returns all first order keys if the input is of type array of objects

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