我有一个JavaScript对象
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
我怎么能得到这个对象中的键的长度和列表?
我有一个JavaScript对象
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
我怎么能得到这个对象中的键的长度和列表?
当前回答
下面是从嵌套对象/数组中获取所有键的解决方案。
它将递归地检查数组中的对象。
function Keys() { let keys = []; this.pushKey = function (key) { keys.push(key); }; this.getKeys = function () { return keys; }; } let keys = new Keys(); let arr = [ { a: 1, b: { c: [{ d: 1, e: [{ f: 1 }] }], }, }, { g: 1, h: { i: [{ j: 1, k: [{ l: 1 }] }], }, }, ]; function getObject(arr) { for (let item of arr) { if (Array.isArray(item)) getObject(item); else getKeys(item); } } function getKeys(obj) { for (let key in obj) { if (Array.isArray(obj[key])) getObject(obj[key]); else if (typeof obj[key] === "object") getKeys(obj[key]); keys.pushKey(key); } } getObject(arr); console.log(keys.getKeys());
其他回答
如果你只想要特定于特定对象的键,而不是任何派生的原型属性:
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
对于以逗号分隔的字符串列出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” } console.log(种(obj)); //我们也可以得到值 console.log (Object.values (obj));
使用切片、应用和连接方法。
var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());
在JavaScript中,对象是一个独立的实体,具有属性和类型。
以数组形式从Object中获取值: object .values(obj) // obj是你使用的对象名称 结果——>“value1”、“value2”,“value3”,“value4”)
以数组形式从Object中获取键: object .keys(obj) // obj是你使用的对象名称 Result -> ["key1", "key2", "key3", "key4"]
由于两个函数都返回数组,您可以使用length属性获取键或值的长度。例如- Object.values(obj)。length或Object.keys(obj).length