我有一个JavaScript对象
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
我怎么能得到这个对象中的键的长度和列表?
我有一个JavaScript对象
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
我怎么能得到这个对象中的键的长度和列表?
当前回答
支持ECMAScript 5的浏览器递归解决方案:
var getObjectKeys = function(obj) {
var keys = Object.keys(obj);
var length = keys.length;
if (length !== 0) {
for (var i = 0; i < length; i++) {
if (typeof obj[keys[i]] === 'object') {
keys[keys[i]] = getObjectKeys(obj[keys[i]]);
}
}
}
return keys;
};
其他回答
如果你只想要特定于特定对象的键,而不是任何派生的原型属性:
function getKeys(obj) {
var r = []
for (var k in obj) {
if (!obj.hasOwnProperty(k))
continue
r.push(k)
}
return r
}
e.g:
var keys = getKeys({'eggs': null, 'spam': true})
var length = keys.length // access the `length` property as usual for arrays
使用种()……这是正确的方法。
完整的文档可以在MDN网站上找到,链接如下:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
使用切片、应用和连接方法。
var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());
对于以逗号分隔的字符串列出JSON对象的键,尝试以下方法:
function listKeys(jObj){
var keyString = '';
for(var k in jObj){
keyString+=(','+k);
}
return keyString.slice(1);
}
/* listKeys({'a' : 'foo', 'b' : 'foo', 'c' : 'foo'}) -> 'a,b,c' */
Var obj = { key1:“value1”, key2: value2, key3:“value3”, key4:“value4” }; Var键= []; 对于(var k in obj) keys.push(k); Console.log ("total " +键。长度+“键”:+键);