"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تسوية كائن متداخل بعمق: دليل خطوة بخطوة

تسوية كائن متداخل بعمق: دليل خطوة بخطوة

تم النشر بتاريخ 2024-11-01
تصفح:683

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. إنشاء الكائن المتداخل:
    • نبدأ بإنشاء كائن متداخل بعمق يسمى المستخدم. أنه يحتوي على خصائص مثل الاسم والعنوان والكائنات المتداخلة الأخرى بداخلها عنوان.
  2. تهيئة كائن الإخراج:

    • يتم إنشاء كائن فارغ FinalObj لتخزين النتيجة المسطحة.
  3. تعريف دالة التسطيح:

    • تم تعريف دالة باسم flatObjFn، وتقبل معلمتين: أ) obj: الشيء المراد تسويته. ب) الأصل: سلسلة لبادئة أسماء الخصائص من أجل الوضوح.
  4. التكرار من خلال خصائص الكائن:

    • تتكرر حلقة for...in على كل خاصية لكائن الإدخال obj.
  5. التعامل مع الكائنات المتداخلة:

    • إذا كانت قيمة الخاصية عبارة عن كائن، فإن الدالة flatObjFn هي كذلك تم استدعاؤه بشكل متكرر على هذا الكائن. المعلمة الأم هي متسلسل مع اسم الخاصية الحالي لإنشاء بادئة جديدة للخصائص المتداخلة.
  6. التعامل مع القيم البدائية:

    • إذا كانت قيمة الخاصية ليست كائنًا (أي قيمة بدائية مثل سلسلة أو رقم)، تتم إضافته إلى FinalObj باستخدام مفتاح تم تشكيلها عن طريق ربط الأصل واسم الخاصية الحالي.
  7. استدعاء وظيفة التسطيح:

    • يتم استدعاء flatObjFn باستخدام كائن المستخدم كمدخل و"المستخدم" كـ البادئة الأصلية الأولية.
  8. تسجيل الكائن المسطح:

    • تتم طباعة الكائن المسطح النهائي على وحدة التحكم باستخدام console.log(finalObj).

كيف يعمل؟
تقوم الدالة flatObjFn باجتياز الكائن بشكل متكرر، وتقسيم الهياكل المتداخلة إلى كائن مسطح. تقوم المعلمة الأصلية بتتبع التسلسل الهرمي للكائن، مما يسمح للوظيفة بإنشاء أسماء خصائص ذات معنى في كائن الإخراج.

دعونا نتواصل على تويتر أو لينكدإن

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/dey24/flattening-a-deeply-nested-object-a-step-by-step-guide-163g?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3