23

可能重复:
获取键/值 javascript 对象的键的最佳方法

foo = {酒吧:“baz”}

如何获得 foo 中所有属性和值的列表?

4

3 回答 3

46

for in循环可以为您提供键和值。记得在严格模式下使用const,letvar用于变量声明。

for(const p in foo) {
    console.log (p, foo[p])
}

从控制台:

foo = {bar: "baz"}

Object
bar: "baz"
__proto__: Object

for(p in foo) { console.log (p, foo[p]) }
> bar baz

如果您正在循环的对象具有从其原型继承的属性,您可以使用如下Object.hasOwnProperty()函数防止继承的属性被循环:

for(const p in foo) {
    if (foo.hasOwnProperty(p)) {
        console.log (p, foo[p])
    }
}
于 2012-07-01T02:16:27.280 回答
1

你可以遍历它:

for(var i in foo) {
  console.log( i + ": " + foo[i] + "<br />");
}

演示

于 2012-07-01T02:16:06.640 回答
1

对于您当前正在使用的不同平台,这可能会有所不同。如果您从终端运行,则使用print,如果您没有console对象,则可以使用document.write(),依此类推。

您可以使用/阅读以下内容来理解:

var foo = {bar: "baz", boolean: true, num: 2}

for (i in foo) {
//checks to see where to print.
if (typeof console === 'object') 
    console.log(i + ": " + foo[i]);
else if (typeof document === 'object') 
    document.write(i + ": " + foo[i]);
else 
    print(i + ": " + foo[i]);
}

或者,如果您只是说console.log(foo)在 Chrome/Firefox 中,浏览器会为您执行循环突出显示并为您提供对象的漂亮打印,因此您实际上不需要执行上面显示的循环。

您也可以使用console.debug(foo)代替console.log(foo),区别是细微的。您可以在http://getfirebug.com/wiki/index.php/Console_API阅读更多相关信息

于 2012-07-01T02:54:20.537 回答