我有一个JavaScript对象

var obj = {
   key1: 'value1',
   key2: 'value2',
   key3: 'value3',
   key4: 'value4'
}

我怎么能得到这个对象中的键的长度和列表?


当前回答

如果你决定使用Underscore.js,你最好这样做

var obj = {
    key1: 'value1',
    key2: 'value2',
    key3: 'value3',
    key4: 'value4'
}

var keys = [];
_.each( obj, function( val, key ) {
    keys.push(key);
});
console.log(keys.lenth, keys);

其他回答

obj = {'a':'c','b':'d'}

你可以试试:

[index for (index in obj)] 

这将返回:

['a','b']

来获取键的列表 或

[obj[index] for (index in obj)]

来得到这些值

如果你只想要特定于特定对象的键,而不是任何派生的原型属性:

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

js使得转换非常简洁:

var keys = _.map(x, function(v, k) { return k; });

编辑:我忽略了你也可以这样做:

var keys = _.keys(x);

Var obj = { key1:“value1”, key2: value2, key3:“value3”, key4:“value4” } var keys = Object.keys(obj); Console.log ('obj包含' +键。长度+ '键:'+键);

现在大多数主流浏览器都支持它。

使用切片、应用和连接方法。

var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());