我有一个JavaScript对象

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

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


当前回答

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

console.log(Object.keys(obj));
console.log(Object.keys(obj).length)

其他回答

js使得转换非常简洁:

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

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

var keys = _.keys(x);

使用ES6, 你可以使用forEach遍历一个对象的键。 要获得所有的键,您可以使用Object。返回对象中的所有键

Object.keys(obj).forEach(function(keyValue, index, map) { 
  console.log(keyValue); 
});

上面代码片段的简写为,它只接受一个参数

Object.keys(obj).forEach(function(keyValue) { 
  console.log(keyValue); 
});

如果你决定使用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)]

来得到这些值

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

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