如何在JavaScript对象中获取这些键

时间:2014-11-14 04:35:22

标签: javascript underscore.js lodash

我有以下对象:

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

我喜欢这个:

_.each(result.document[people], function(item){
    console.log(item); 
    //What should I do here ? or I come wrong way ?
});

在第一项中我得到:

{name : 'Harry Potter', age : '18':, gender:'Male'}
{name : 'hermione grange', age : '18':, gender:'Female'}

我想得到[姓名,年龄,性别]。我该怎么办?

5 个答案:

答案 0 :(得分:1)

如果您认为您的值是动态的,请首先使用函数

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

var func = function (one, two) {
  var array = input[one][two];
  var arr =[];
  for (var i=0; i<array.length; i++){
     arr = Object.keys(array[0]);
  }
 return arr;       
}
func("document", "people"); // will return ["name", "age", "gender"]

答案 1 :(得分:1)

试试这个

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

此处,键数组将返回您的键["name", "age", "gender"]

答案 2 :(得分:0)

这样的东西?

_.each(result.document[people], function(item) {
  _.each(item, function(item, key) {
    console.log(key);
 });
});
在对象的情况下,

_.each将第二个key参数发送给回调函数。

答案 3 :(得分:0)

你去..最后的答案。 (根据评论编辑返回键而不是值)

_.each(result.document[people], function(item){
    //get keys as numerical array
    var num_arr = [];
    for (var key in item) {
        num_arr.push( key );
    }
    console.log(num_arr); // should return ['name', 'age', 'gender']

});

答案 4 :(得分:0)

好的,现在我知道你真的想要对象的名字,而不是价值。所以我为你添加了另一个代码。 对不起,我现在没有时间解释,但我写的这段代码确实是你需要的伎俩。

这显示了对象的名称:

root_obj=input.document.people[0];
tmp=[];
for(val in root_obj )
{
  tmp.push(val);
}
console.log(tmp);

这显示了对象的值:

root_obj=input.document.people;

for(obj in root_obj )
{
  tmp=[];
  for(val in root_obj[obj] )
  {
    tmp.push(root_obj[obj][val]);
  }
  console.log(tmp);
}