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

كيف يمكن العثور على كائن محدد بكفاءة في كائنات JavaScript المتداخلة؟

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

How to Efficiently Find a Specific Object in Nested JavaScript Objects?

التكرار من خلال كائنات JavaScript المتداخلة

يمكن أن يكون التكرار من خلال كائنات JavaScript المتداخلة أمرًا صعبًا، خاصة عندما تحتاج إلى استرداد كائنات محددة بناءً على خاصية قيمة. لنفكر في المثال التالي:

var cars = {
  label: 'Autos',
  subs: [
    {
      label: 'SUVs',
      subs: []
    },
    {
      label: 'Trucks',
      subs: [
        {
          label: '2 Wheel Drive',
          subs: []
        },
        {
          label: '4 Wheel Drive',
          subs: [
            {
              label: 'Ford',
              subs: []
            },
            {
              label: 'Chevrolet',
              subs: []
            }
          ]
        }
      ]
    },
    {
      label: 'Sedan',
      subs: []
    }
  ]
};

إذا أردنا استرداد الكائن الخاص بعلامة "Ford"، فيمكننا استخدام أسلوب عودي:

const iterate = (obj, identifier) => {
  for (let key in obj) {
    if (obj[key]['label'] === identifier) {
      return obj[key];
    }
    if (typeof obj[key] === 'object' && obj[key] !== null) {
      const result = iterate(obj[key], identifier);
      if (result) {
        return result;
      }
    }
  }
  return null;
};

const fordObject = iterate(cars, 'Ford');

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

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3