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

كيفية تصفية مجموعة JavaScript من الكائنات بناءً على شروط متعددة؟

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

How to Filter a JavaScript Array of Objects Based on Multiple Conditions?

تصفية المصفوفات في JavaScript بناءً على شروط متعددة

بيان المشكلة

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

الحل المقترح

ضع في اعتبارك مقطع التعليمات البرمجية التالي:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Iterate over the array
      for (var i = 0; i 

في الحل المقترح، تحدث المشكلة عندما يحتوي المرشح على خصائص متعددة. على وجه التحديد، أثناء التكرار الثاني، المقارنة بين users[i][prop] وfilter[prop] غير صحيحة. لإصلاح ذلك، يمكننا تعديل الكود إلى ما يلي:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Apply filter on the array
      users = users.filter((user) => user[prop] === filter[prop]);
    }
  }
  return result;
}

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

مثال للاستخدام

مع الحل المحدث، ستعمل عملية التصفية كما هو متوقع:

var users = [{
  name: 'John',
  email: '[email protected]',
  age: 25,
  address: 'USA'
}, {
  name: 'Tom',
  email: '[email protected]',
  age: 35,
  address: 'England'
}, {
  name: 'Mark',
  email: '[email protected]',
  age: 28,
  address: 'England'
}];

var filter = {
  address: 'England',
  name: 'Mark'
};

var filteredUsers = filterUsers(users, filter);

console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]

يعالج هذا الحل مشكلة عدم توفر شروط التصفية المتعددة يتم تطبيقها بشكل صحيح، مما يضمن أن المصفوفة التي تمت تصفيتها تعكس بدقة المعايير المحددة.

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

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

Copyright© 2022 湘ICP备2022001581号-3