如果有JavaScript对象:

var objects={...};

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


当前回答

use

console.log(variable)

如果你使用谷歌chrome打开控制台使用Ctrl+Shift+j

转到>>控制台

其他回答

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

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

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

_.values({one : 1, two : 2, three : 3}); // return [1, 2, 3]
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

这个问题没有指定是否也需要继承的和不可枚举的属性。

获得谷歌不容易找到的所有东西,包括继承的属性和不可枚举的属性,都存在一个问题。

如果我们要获得所有继承的和不可枚举的属性,我的解决方案是:

function getAllPropertyNames(obj) {
    let result = new Set();
    while (obj) {
        Object.getOwnPropertyNames(obj).forEach(p => result.add(p));
        obj = Object.getPrototypeOf(obj);
    }
    return [...result];
}

然后遍历它们,只需要使用for-of循环:

函数getAllPropertyNames(obj) { let result = new Set(); While (obj) { Object.getOwnPropertyNames (obj)。forEach(p => result.add(p)); obj = Object.getPrototypeOf(obj); } 返回结果[…]; } 让obj = { 美国广播公司(abc): 123, 某某:1.234, foobar:“你好” }; for (p of getAllPropertyNames(obj)) console.log(p);

对于那些早期适应CofeeScript时代的人来说,这里有另一个等价的东西。

val for key,val of objects

这可能比这样更好,因为可以减少对象,重新键入,降低可读性。

objects[key] for key of objects