获取JavaScript对象的键列表

329
我有一个类似以下的JavaScript对象:
var obj = {
   key1: 'value1',
   key2: 'value2',
   key3: 'value3',
   key4: 'value4'
}

我怎样才能获得这个对象的键列表和长度?


1
可能是获取JSON对象中属性名称的重复问题。 - T J
1
@TJ 我认为这两者并不完全相同。 这是一个对象,而副本是一个JSON对象。 - GuyT
如果你有下划线,那么只需使用_.keys(your_object)。 - MinhajulAnwar
1
随着时间的推移,自2010年以来情况已经发生了变化,因此最好接受得到最多赞的答案作为“答案”。 - Jonas Wilms
19个回答

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

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

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

3
在JavaScript中,对象是一个独立的实体,具有属性和类型。
要以数组形式从对象中获取值: Object.values(obj) // obj是您使用的对象名称 结果 -> ["value1", "value2", "value3", "value4"]
要以数组形式从对象中获取键: Object.keys(obj) // obj是您使用的对象名称 结果 -> ["key1", "key2", "key3", "key4"]
由于两个函数都返回数组,您可以通过使用length属性来获取键或值的长度。例如 - Object.values(obj).length或Object.keys(obj).length

3
请注意,在CoffeeScript中,这可以在所有浏览器和Node中完成。
k for k of obj

因此
(1 for _ of obj).length

2

使用ES6,您可以使用forEach遍历对象的键。要获取所有键,可以使用Object.keys返回对象中的所有键。

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

以上代码的简写形式只需要一个参数,如下所示:
Object.keys(obj).forEach(function(keyValue) { 
  console.log(keyValue); 
});

2

要将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' */

1
       if(props.userType){
          var data = []
          Object.keys(props.userType).map(i=>{
                data.push(props.userType[i])
          })
          setService(data)
        }

0
使用切片、应用和连接方法。
var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());

0

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接