شروحات الكمبيوتر والإنترنت والموبايل

إضافة كائن لمصفوفة بناءً على مصفوفة أخرى في جافاسكريبت

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

فهم الهيكل الأساسي للبيانات

لنفترض أننا نعمل مع مجموعة من الوظائف، يمثل كل منها كائن يحتوي على معرف الوظيفة (jobId) وبيانات الوظيفة (jobData)، حيث تتضمن بيانات الوظيفة مصفوفة من الحقول المخصصة (customFields). كل حقل مخصص يمكن أن يحتوي على نوع من البيانات، بما في ذلك الحقول من نوع "CHECKBOX". في هذه الحالة، قد تحتوي المصفوفة على قيم مختلفة مثل "نعم" أو "لا".

تبدو البيانات كالآتي:

const jobs = [
  {
    jobId: '11111',
    jobData: {
      title: 'Job 1',
      customFields: [
        {
          name: 'AA Checkbox 1',
          type: 'CHECKBOX',
          value: 'Yes',
        },
        {
          id: 'koi',
          name: 'CF Time',
          type: 'TIME',
          value: '22:45',
        },
      ],
    },
  },
  {
    jobId: '22222',
    jobData: {
      title: 'Job 2',
      customFields: [
        {
          name: 'BB Checkbox 2',
          type: 'CHECKBOX',
          value: 'No',
        },
        {
          id: '444',
          name: 'CF Time',
          type: 'TIME',
          value: '12:08',
        },
      ],
    },
  },
  {
    jobId: '33333',
    jobData: {
      title: 'Job 3',
      customFields: [],
    },
  },
];

الهدف من العملية

الهدف هنا هو إضافة كائن جديد من نوع "CHECKBOX" والذي يحمل القيمة "لا" لكل وظيفة لا تحتوي على هذا الكائن، ولكن بشرط أن تكون إحدى الوظائف الأخرى تحتوي عليه. وهذا يعني أنك تحتاج إلى التحقق أولًا من وجود كائنات "CHECKBOX" في أي من الوظائف.

خطوات التنفيذ

  1. تحديد جميع كائنات CHECKBOX: يجب أولاً استعراض جميع الوظائف للتحقق من وجود أي كائنات من النوع "CHECKBOX" وحفظها في مصفوفة لتحقيق هذا الغرض.

  2. تحديث الوظائف: بعد تحديد وجود كائن من النوع "CHECKBOX"، نقوم بإضافة كائن جديد يحمل القيمة "لا" لجميع الوظائف التي لا تحتوي على كائن مشابه.

  3. إعادة هيكلة البيانات: في النهاية، نقوم بإعادة هيكلة البيانات بالصيغة المطلوبة.

تنفيذ الكود

إليك الكود الذي يوضح كيفية القيام بذلك:

const checkboxes = jobs.flatMap(job => 
  job.jobData.customFields.filter(field => field.type === 'CHECKBOX')
);
const hasCheckbox = checkboxes.length > 0;
jobs.forEach(job => {
  if (!job.jobData.customFields.some(field => field.type === 'CHECKBOX')) {
    job.jobData.customFields.push({
      id: 'sasa',
      name: 'AA Checkbox 1',
      type: 'CHECKBOX',
      value: 'No',
    });
    // إضافة كائنات CHECKBOX أخرى إذا لزم الأمر.
    job.jobData.customFields.push({
      id: 'fdf',
      name: 'BB Checkbox 2',
      type: 'CHECKBOX',
      value: 'No',
    });
  }
});

في هذا الكود، نقوم أولا بجمع جميع كائنات "CHECKBOX" من بين الوظائف. بعد ذلك، نمر عبر الوظائف للتحقق من وجود كائن "CHECKBOX" فيها، وإذا لم يكن موجودًا، نقوم بإضافة كائن جديد بالقيمة "لا".

النتيجة النهائية

بعد تنفيذ الكود، ستحصل على مجموعة وظائف معدلة كالتالي:

const jobs = [
  {
    jobId: '11111',
    jobData: {
      title: 'Job 1',
      customFields: [
        {
          id: 'sasa',
          name: 'AA Checkbox 1',
          type: 'CHECKBOX',
          value: 'Yes',
        },
        {
          id: 'fdf',
          name: 'BB Checkbox 2',
          type: 'CHECKBOX',
          value: 'No',
        },
        {
          id: 'koi',
          name: 'CF Time',
          type: 'TIME',
          value: '22:45',
        },
      ],
    },
  },
  {
    jobId: '22222',
    jobData: {
      title: 'Job 2',
      customFields: [
        {
          id: 'sasa',
          name: 'AA Checkbox 1',
          type: 'CHECKBOX',
          value: 'No',
        },
        {
          id: 'fdf',
          name: 'BB Checkbox 2',
          type: 'CHECKBOX',
          value: 'No',
        },
        {
          id: '444',
          name: 'CF Time',
          type: 'TIME',
          value: '12:08',
        },
      ],
    },
  },
  {
    jobId: '33333',
    jobData: {
      title: 'Job 3',
      customFields: [
        {
          id: 'sasa',
          name: 'AA Checkbox 1',
          type: 'CHECKBOX',
          value: 'No',
        },
        {
          id: 'fdf',
          name: 'BB Checkbox 2',
          type: 'CHECKBOX',
          value: 'No',
        },
      ],
    },
  },
];

بهذه الطريقة، يمكننا استخدام Assigning object to array of objects based on another array check in JavaScript بفعالية. وتعتبر هذه العملية نقطة انطلاق لفهم كيفية إدارة وتحليل البيانات عبر استخدام JavaScript. لذا، إذا كنت ترغب في تنفيذ هذه العملية في تطبيقاتك المقبلة، سنكون قد استعرضنا الأمور بشكل شامل وفعال.

فهد السلال

خبير تقني متخصص في شروحات الكمبيوتر والإنترنت والموبايل، يتمتع بخبرة واسعة في تقديم حلول تقنية مبتكرة ومبسطة. يهدف فهد إلى مساعدة المستخدمين على تحسين تجربتهم التقنية من خلال مقالات وأدلة عملية واضحة وسهلة الفهم.
زر الذهاب إلى الأعلى
Don`t copy text!