如果有JavaScript对象:

var objects={...};

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


当前回答

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

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

其他回答

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

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(键,索引,值); });

现在我使用Dojo Toolkit,因为旧的浏览器不支持Object.values。

require(['dojox/lang/functional/object'], function(Object) {
    var obj = { key1: '1', key2: '2', key3: '3' };
    var values = Object.values(obj);
    console.log(values);
});

输出:

['1', '2', '3']

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

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

下面是一个可重用的函数,用于将值放入数组中。它还考虑了原型。

Object.values = function (obj) {
    var vals = [];
    for( var key in obj ) {
        if ( obj.hasOwnProperty(key) ) {
            vals.push(obj[key]);
        }
    }
    return vals;
}

对象。条目可以更好地做到这一点。

var dataObject = {" a ":{“标题”:“店”},“b”:{“标题”:“家”}} Object.entries (dataObject)。map(itemArray => { console.log("key=", itemArray[0], "value=", itemArray[1]) })