获取Javascript对象属性名称

时间:2015-10-27 23:42:45

标签: javascript jquery

我想知道是否有办法在我的jquery.grep函数中动态获取字段名称或属性名称

<script type="text/javascript">
var names = [];
var object = {
    name: "Joe",
    age: 20,
    email: "joe@hotmail.com"
};
names.push(object);
object = {
    name: "Mike",
    age: 50,
    email: "mikoooe@hotmail.com"
};
names.push(object);
object = {
    name: "Joe",
    age: 45,
    email: "mikezz@hotmail.com"
};
names.push(object);

var found_names = $.grep(names, function(v,y) {
    return v.name === "Mike" && v.age <= 50;
});

$(document).ready(function(){

console.log(found_names);
});

</script>

我实际使用此代码的是根据条件的名称和年龄值但是如果我想获得关键名称,例如姓名,年龄,电子邮件。我的功能可以吗?

2 个答案:

答案 0 :(得分:1)

您可以通过执行此操作来遍历对象的属性 -

var myObj = { name: "John", age: 28 }

for (var key in myObj) {
    console.log("key: " + key);
    console.log("value: " + myObj[key]);
}

//prints
key: name
value: John
key: age
value: 28

答案 1 :(得分:1)

当你使用grep时,你基本上创建了一个新数组,其中的对象名称为&#34; Mike&#34;并且低于50或等于50。 在您的情况下,您可以遍历新阵列并打印键和值。

found_names.forEach(function (obj) {
   console.log('Name: ' + obj.name);
   console.log('Age: ' + obj.age);
   console.log('Email: ' + obj.email);
});

如果你想要索引(键),你也可以

found_names.forEach(function (obj, index) {
       console.log('Index: ' + index);
       console.log('Name: ' + obj.name);
       console.log('Age: ' + obj.age);
       console.log('Email: ' + obj.email);
});
  

编辑2 -

如果你有一个动态的物体,你不知道钥匙,你可以使用蒂亚戈建议的东西,并稍微调整一下。下面的例子将循环遍历每个对象然后将遍历其数据。

found_names.forEach(function (obj) {
    for(key in obj){
        console.log(key + ': ' + obj[key]);
    }
});

另一个例子是使用像对象一样的数组,你循环遍历一个对象,就像你在一个数组中循环一样。

found_names.forEach(function (obj, index, array) {
    array.forEach(function(data){
        // data would be the current index 
        console.log(array[data]);
    });
});

Here is an example on JSFiddle

Source for forEach Docs