首页 > 解决方案 > 在 JavaScript 中,当 value 本身是一个对象时,如何记录对象的 {key:value} 对的值?可能有递归函数吗?

问题描述

在调试中,有时我有一个由许多键值对组成的对象,我需要查看各个对。我有以下代码可以做到这一点。

for(let [key, value] of Object.entries(params)) {
  console.log('(key, value) : (' + key + ', ' + value + ')');
}

但是现在,我遇到了一个实例,其中 value 本身就是一个对象。我在日志中得到的所有价值都是[object: Object]什么告诉我的很少。

当它是一个对象时,为了深入研究价值,我尝试了:

for(let [key0, value0] of Object.entries(params)) {
  console.log('(key, value) : (' + key0 + ', ' + value0 + ')');
  while(typeof value0 === 'object') {
    for(let [key1, value1] of Object.entries(value0)) {
      console.log('typeof val == obj: (' + key1 + ', ' + value1 + ')');
    }  // end for-let
  }  // end while
}  // end for-let

但显然,我所能做的就是让计算机陷入无限循环。

也许我需要一个递归函数。我知道它们的存在是因为我一直在阅读Eloquent JavaScript (Haverbeke, Marijn, 2d ed.),但我(还没有?)精通 JavaScript 以自己找出一个。

任何人都可以帮忙吗?当它是一个对象时,我真的需要查看内部值,无论是否通过递归函数。

非常感谢您阅读本文以及您的时间和精力。

编辑:

我想我明白为什么无限循环了。我在 while 语句组中什么都不做来改变 value0 的类型,所以条件总是为真。我从不打破 while 条件。但我仍然需要一个解决方案。

标签: javascriptrecursionjavascript-objects

解决方案


推荐阅读