如果有JavaScript对象:

var objects={...};

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


当前回答

通过使用简单的for..in循环:

for(var key in objects) {
    var value = objects[key];
}

其他回答

var objects={...}; this.getAllvalues = function () {
        var vls = [];
        for (var key in objects) {
            vls.push(objects[key]);
        }
        return vls;
    }

下面是一个类似于PHP的array_values()函数

function array_values(input) {
  var output = [], key = '';
  for ( key in input ) { output[output.length] = input[key]; }
  return output;
}

如果你使用ES6或更高版本,下面是如何获取对象的值:

Array.from(values(obj));

兼容ES7,甚至一些浏览器还不支持它

因为object .values(<object>)将内置在ES7 &

在等待所有浏览器支持它之前,你可以将它包装在一个函数中:

Object.vals=(o)=>(Object.values)?Object.values(o):Object.keys(o).map((k)=>o[k])

然后:

Object.vals({lastname:'T',firstname:'A'})
 // ['T','A']

一旦浏览器与ES7兼容,你就不需要更改代码中的任何内容。

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

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

使用:object .values(),我们传入一个对象作为参数,并接收一个数组的值作为返回值。

这将返回给定对象的可枚举属性值的数组。你将得到与使用for in循环相同的值,但没有Prototype上的属性。下面这个例子可能会让事情更清楚:

函数人(姓名){ This.name = name; } Person.prototype.age = 5; 让dude =新人('dude'); 对于(让道具在伙计){ console.log(老兄[支持]);// for in仍然显示年龄,因为这是在原型上 } //我们可以使用hasOwnProperty,但这不是很优雅 // es6 + console.log (Object.values(伙计)); //非常简洁,我们不显示原型上的道具