javascript - 如何在 Javascript 中检查每个对象字段的深度

标签 javascript arrays algorithm object depth-testing

我的 React Native 应用程序中有一个导航功能,它将在开发人员模式下传递给它的所有参数输出到控制台,有时我向参数发送了一个大存储,但它无法输出。获取有关循环对象引用的错误,因为该对象非常深。因此,我决定创建一个函数来检查对象的所有字段,并依赖它将信息输出到控制台,例如,如果对象字段的深度超过 1 层。

const notDeepObj = {
   name: 'John',
   surname: 'Robert',
   age: 28,
   family: false,
};
const deepObj = {
  name: 'John',
  surname: 'Robert',
  bankAccount: {
    accounts: 2,
    cash: true,
    credit false,
    wasCreated: {
      city: 'New-York',
      date: '12.02.2020.',
    }
  }
}
function checkDepthOfObject(obj){}

如果对象不深,它必须返回对象本身,如下所示:

checkDepthOfObject(notDeepObj) 
//it will return:
{
   name: 'John',
   surname: 'Robert',
   age: 28,
   family: false,
};

对于深度对象,它必须返回所有非深度字段并加上对象的深度字段的标志:

checkDepthOfObject(notDeepObj) 
//it will return:
{
   name: 'John',
   surname: 'Robert',
   bankAccount: '[DEEP_OBJECT]'
};

您能推荐我最好的方法吗?

最佳答案

使用Object.entriesmap并检查typeof值。

const notDeepObj = {
  name: "John",
  surname: "Robert",
  age: 28,
  family: false
};
const deepObj = {
  name: "John",
  surname: "Robert",
  bankAccount: {
    accounts: 2,
    cash: true,
    credit: false,
    wasCreated: {
      city: "New-York",
      date: "12.02.2020."
    }
  }
};
function checkDepthOfObject(obj) {
  return Object.fromEntries(
    Object.entries(obj).map(([key, value]) => [
      key,
      typeof value === "object" ? "[DEEP_OBJECT]" : value
    ])
  );
}

console.log(checkDepthOfObject(notDeepObj));
console.log(checkDepthOfObject(deepObj));

关于javascript - 如何在 Javascript 中检查每个对象字段的深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916533/

相关文章:

javascript - a && b && c VS if - 性能上有什么区别?

javascript - AJAX从php文件加载指定函数

javascript - 诸如 Chai 之类的断言库如何在不强制调用函数的情况下工作?

javascript - 为 history.back 按钮定义一个引用站点

c++ - 为什么这样的迭代器是合法的?

c++ - 将 const char[] 初始化为非静态类成员

c++ - 你如何声明一个 const 函数指针数组?

algorithm - 如何计算两个单词之间的 "shortest distance"?

c++ - 替换字符串数组中所有出现的字母

c++ - 检查字符串是否具有唯一字符