如何获取JavaScript对象的所有属性值(不知道键名)?

552
如果有一个 JavaScript 对象:
var objects={...};

假设一个对象拥有50个以上的属性,不知道这些属性名(也就是不知道'keys'),如何在循环中获取每个属性的值?


27
读者请注意:不要错过非常有见地的第二个答案 - Pandaiolo
可能是如何列出JavaScript对象的属性的重复问题。 - Nerdroid
25个回答

0
这是一个类似于 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));

因为某种原因,values() 在 Chrome 和 Firefox 中可以正常工作,但在 iojs/node 上却不行。 - jaggedsoft

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

-4

ECMAScript5 中使用

 keys = Object.keys(object);

否则,如果你的浏览器不支持它,可以使用众所周知的 for..in 循环
for (key in object) {
    // your code here
}

17
问题是要求提供数值,而不是键。 - zachelrath
1
@zachelrath 你说得对。- 但是如果你想要获取值,这个脚本是有用的,因为当你知道键时,你可以在循环中使用 object[key] 来获取值。 - fridojet
2
@fridojet 但这可以使用for..in(和hasOwnProperty)完成,所以它并没有真正获得什么.. 我希望ECMAScript 5th定义了Object.pairs(和Object.items用于[[key, value], ..]),但不幸的是,它没有。 - user2246674

-9

现在我使用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']

5
严格来讲,这个数组是不正确的。你有一个字符串数组而不是数字数组。 - qubyte

-11

使用

console.log(variable)

如果您使用Google Chrome,请通过按Ctrl + Shift + j打开控制台

进入 >> 控制台


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