如果有JavaScript对象:

var objects={...};

假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?


当前回答

在ECMAScript5中使用

 keys = Object.keys(object);

否则,如果您的浏览器不支持它,请使用众所周知的for. in循环

for (key in object) {
    // your code here
}

其他回答

如果你可以访问Underscore.js,你可以使用_. js。价值观的作用是这样的:

_.values({one : 1, two : 2, three : 3}); // return [1, 2, 3]

我认为最简单的选择是这样的:

Object.keys(data).forEach(function (key, index) {
  var value = data[key];
  console.log(key, index, value);
});

例如,这里添加了一个可运行的代码:

Const user = { 名称:“亚历克斯”, 年龄:30岁 }; 种(用户)。forEach(函数(键,索引){ Var值= user[key]; Console.log(键,索引,值); });

我知道我来晚了一点,但这是新firefox 47 Object的垫片。值方法

Object.prototype.values = Object.prototype.values || function(obj) {
  return this.keys(obj).map(function(key){
    return obj[key];
  });
};

显然,正如我最近了解到的,这是最快的方法:

var objs = {...};
var objKeys = Object.keys(obj);
for (var i = 0, objLen = objKeys.length; i < objLen; i++) {
    // do whatever in here
    var obj = objs[objKeys[i]];
}
const object1 = {
  a: 'somestring',
  b: 42
};

for (let [key, value] of Object.entries(object1)) {
  console.log(`${key}: ${value}`);
}

// expected output:
// "a: somestring"
// "b: 42"
// order is not guaranteed