如何获取对象中键值对的列表?

24

https://dev59.com/92445IYBdhLWcg3wLXIK#47753960 - sudheer nunna
3个回答

47

使用 for in 循环可以获取键和值。在严格模式下,记得使用 constletvar 声明变量。

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])
    }
}

1
你可以通过循环遍历它:
for(var i in foo) {
  console.log( i + ": " + foo[i] + "<br />");
}

演示


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]);
}

或者,如果你在Chrome/Firefox中只是输入console.log(foo),浏览器会为你执行循环高亮显示并给出你的对象的漂亮打印,所以你不需要做上面展示的循环。

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


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