بالنظر إلى مجموعة من الكائنات وكائن التصفية، فإن الهدف هو تصفية و تبسيط المصفوفة بناءً على الشروط المتعددة المحددة في عامل التصفية. ومع ذلك، تنشأ مشكلة محددة عندما يحتوي عامل التصفية على خصائص متعددة.
ضع في اعتبارك مقطع التعليمات البرمجية التالي:
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