首页  >  文章  >  web前端  >  展平深层嵌套对象:分步指南

展平深层嵌套对象:分步指南

王林
王林原创
2024-08-13 16:38:39885浏览

Flattening a Deeply Nested Object: A Step-by-Step Guide

理解问题
我们经常在 JavaScript 应用程序中遇到复杂的数据结构。这些结构可以是深度嵌套的对象,使得直接操作或处理它们变得具有挑战性。一种常见的操作是展平这些对象,将它们转换为更简单的结构,其中所有属性都位于顶层。

在这篇博客中,我们将深入研究一个 JavaScript 代码片段,它可以有效地展平深度嵌套的对象。我们将逐行分解代码,解释其逻辑和功能。

代码分解

let user = {
  name : 'Chiranjit',
  address : {
    personal : {
      city: 'Kolkata',
      state: 'West Bengal'
    },
    office : {
      city: 'Bengaluru',
      state: 'Karnataka',
      area: {
        landmark:'Waterside',
        post: 433101
      }
    }
  }
}
var finalObj = {} 

const flatObjFn = (obj, parent) => {
  for(let key in obj){
    if(typeof obj[key] === 'object'){
      flatObjFn(obj[key], parent+'_'+key)
    }else{
      finalObj[parent + '_' + key] = obj[key]
    }
  }
}

flatObjFn(user, 'user');
console.log(finalObj);

逐行解释

  1. 创建嵌套对象:
    • 我们首先创建一个名为 user 的深度嵌套对象。它包含 属性,例如名称、地址以及其中进一步嵌套的对象 地址。
  2. 初始化输出对象:

    • 创建一个空对象finalObj来存储展平结果。
  3. 定义展平函数:

    • 定义了一个名为 flatObjFn 的函数,接受两个参数: a) obj:要压平的对象。 b)parent:为了清晰起见,为属性名称添加前缀的字符串。
  4. 迭代对象属性:

    • for...in 循环迭代输入对象 obj 的每个属性。
  5. 处理嵌套对象:

    • 如果属性的值为对象,则 flatObjFn 函数为 递归调用该对象。父参数是 与当前属性名称连接以创建新的前缀 对于嵌套属性。
  6. 处理原始值:

    • 如果属性的值不是对象(即原始值) 像字符串或数字),它用一个键添加到 FinalObj 通过连接父级和当前属性名称形成。
  7. 调用展平函数:

    • flatObjFn 被调用,用户对象作为输入,“user”作为 初始父前缀。
  8. 记录扁平化对象:

    • 最终的展平对象使用打印到控制台 console.log(finalObj).

它是如何工作的?
flatObjFn 函数递归遍历对象,将嵌套结构分解为平面对象。父参数跟踪对象层次结构,允许函数在输出对象中创建有意义的属性名称。

让我们在 Twitter 或 LinkedIn 上联系

以上是展平深层嵌套对象:分步指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn