Javascript: Getting a Single Property Name
Given an object like this:
{ name: "joe" }
I want to get the value "name". I know I can use the for construct to iterate over the properties in an object, but the objects I'll be dealing with will always have a single key:value pair, and I won't know the name of the property. To further illustrate:
var a = { age: 24 };
console.log(myFunc(a)) // Displays "age"
var b = { job: "cook" };
console.log(myFunc(b)) // Displays "job"
Is there anyway to do this without iterating over the object? Also I'd like to do this in pure Javascript. No f开发者_JAVA技巧rameworks/libs involved.
It is good practice to use .hasOwnProperty
to ensure you aren't returning a property from the Object prototype:
function myFunc(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) return prop;
}
}
This seems to be about the best you can get:
function myFunc(v) {
for (var x in v) { return { prop: x, val: v[x] }; }
return null;
};
Nope, iteration is the only well-supported way to get the property name. So for...in
time it is. Just hide it in a function and it'll look fine.
However, it might also be worth thinkin about whether you should be using a different kind of object for your purpose, say, {"property": "age", "value": 24}
, or even ["age", 24]
You can iterate over the object's properties and simply return the first one.
function myFunc(obj) {
for (var prop in obj) {
return prop;
}
}
Edit: oops, you wanted the property name, not the value
Why not iterate? It's just one step. I don't think you can get it in any other way. You can even break after the first step if it makes you feel better.
精彩评论