如果我有一个JS对象,比如:
var foo = { 'bar' : 'baz' }
如果我知道foo
具有基本键/值结构,但不知道键的名称,那么获取它最简单的方法是什么?for ... in
?$.each()
?我希望有更好的.
发布于 2011-06-08 00:56:10
如果要获取所有密钥,请使用ECMAScript 5 introduced Object.keys
。这只被较新的浏览器支持,但是MDC documentation提供了另一种实现(也使用for...in
btw):
if(!Object.keys) Object.keys = function(o){
if (o !== Object(o))
throw new TypeError('Object.keys called on non-object');
var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
当然,如果同时需要键和值,那么for...in
是唯一合理的解决方案。
发布于 2013-04-18 03:42:03
您可以使用for循环在对象内部进行迭代:
for(var i in foo){
alert(i); // alerts key
alert(foo[i]); //alerts key's value
}
或
Object.keys(foo)
.forEach(function eachKey(key) {
alert(key); // alerts key
alert(foo[key]); // alerts value
});
发布于 2015-02-23 17:26:59
您可以单独访问每个键,而无需迭代,如下所示:
var obj = { first: 'someVal', second: 'otherVal' };
alert(Object.keys(obj)[0]); // returns first
alert(Object.keys(obj)[1]); // returns second
https://stackoverflow.com/questions/6268679
复制相似问题