我有一个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());

其他回答

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

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

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

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

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

var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());
       if(props.userType){
          var data = []
          Object.keys(props.userType).map(i=>{
                data.push(props.userType[i])
          })
          setService(data)
        }

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

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

下面是从嵌套对象/数组中获取所有键的解决方案。

它将递归地检查数组中的对象。

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());