Zen Eddin Allaham نشر 27 مايو أرسل تقرير نشر 27 مايو اريد شرح مفصل لدالات find & findIndex & findOne 3 اقتباس
0 Mustafa Suleiman نشر 27 مايو أرسل تقرير نشر 27 مايو find و findIndex دوال خاصة بلغة جافاسكريبت، بينما findOne خاصة بـ MongoDB، هل السؤال صحيح أم أخطأت في الكتابة؟ اقتباس
0 محمد_عاطف نشر 27 مايو أرسل تقرير نشر 27 مايو هل يمكنك توضيح الدوال التي تقصدها ولو بمثال في الكود ؟ حيث الداول تلك موجودة في قاعدة البيانات mongodb وفي javascript ولكل دالة إستخدامها بناء على مكان إستخدامها . بتاريخ 27 دقائق مضت قال Hxfhf Ucicic: اقصد في ماذا نستخدمهم نعم الإستخدام يختلف بناء على المكان الذي تستخدمهم فيه يرجى التوضيح أكثر ما اللغة التي تقصدها أو قاعدة البيانات. عموما الدالة find تستخدم للبحث عن أول عنصر في البيانات . فبناء على الشرط الذي يمرر لها ستعيد أو عنصر يطابق هذا الشرط وإلا ستعيد undifined. const products = [ { id: 1, name: 'لابتوب', price: 1200 }, { id: 2, name: 'ماوس', price: 25 }, { id: 3, name: 'كيبورد', price: 75 }, { id: 4, name: 'شاشة', price: 300 }, { id: 5, name: 'سماعات', price: 15 } ]; const cheapProduct = products.find(product => product.price < 20); console.log(cheapProduct); // الناتج { id: 5, name: 'سماعات', price: 15 } const nonExistentProduct = products.find(product => product.price > 5000); console.log(nonExistentProduct); // الناتج undefined (لأنه لا يوجد منتج سعره أكبر من 5000) كما في المثال السابق في أول جزء سيتم إعادة أول منتج سعره أقل من 20 . وفي ثاني جزء لن يتم إعادة شئ لأنه لا يوجد منتج سعره أكبر من 5000. أم الدالة findIndex تستخدم للبحث عن أول فهرس (index) في المصفوفة . حيث تعيد أول index للعنصر الذي يوافق الشرط بدلا من إعادة العنصر نفسه فيمكننا إستبدال المثال السابق بالتالي : const products = [ { id: 1, name: 'لابتوب', price: 1200 }, { id: 2, name: 'ماوس', price: 25 }, { id: 3, name: 'كيبورد', price: 75 }, { id: 4, name: 'شاشة', price: 300 }, { id: 5, name: 'سماعات', price: 15 } ]; const cheapProductIndex = products.findIndex(product => product.price < 20); console.log(cheapProductIndex); // الناتج 4 const nonExistentProductIndex = products.findIndex(product => product.price > 5000); console.log(nonExistentProductIndex); // -1 لاحظ في الجزء الأول تم إعادة 4 وهو الفهرس الخاص بالعنصر الذي سعره أقل من 20 . وفي الجزء الثاني تم إعادة -1 لأنه لم يتم العثور على ما نريد . حيث findIndex تعيد -1 إذا لم نجد ما نعثر عليه. أما findOne تستخدم في قواعد البيانات لتعيد أول عنصر في قاعدة البيانات يحقق الشرط . db.users.findOne({ name: 'أحمد' }) فمثلا هنا سيعيد أو قيمة في قاعدة البيانات لها إسم name يساوي "أحمد". اقتباس
0 Mustafa Suleiman نشر 27 مايو أرسل تقرير نشر 27 مايو بتاريخ 9 دقائق مضت قال Hxfhf Ucicic: اقصد في ماذا نستخدمهم find للبحث في مصفوفة وإعادة أول عنصر يطابق شرط معين نقوم بتعريفه في دالة الاختبار، أي دالة callback التي يتم استدعائها من قبل find، وفي حال لم يتم العثور على عنصر، تعود بقيمة undefined. const numbers = [5, 12, 8, 130, 44]; const found = numbers.find(num => num > 10); console.log(found); في الكود السابق بحثت عن عنصر أكبر من 10 وبما أنّ 12 هو أول رقم أكبر من 10 يتم إيجاده بسبب الـ index الخاص به وهو 1 في المصفوفة، لذا النتيجة هي 12، ولا يُشترط أرقام بالطبع الفكرة هي إرجاع أول عنصر في المصفوفة حتى لو كان كائن: const users = [ { id: 1, name: "أحمد" }, { id: 2, name: "محمد" }, { id: 3, name: "علي" } ]; const user = users.find(user => user.id === 2); console.log(user); بينما الدالة findIndex تشبه find، لكن بدلاً من إعادة العنصر نفسه، تُعيد فهرس أي الـ index لأول عنصر يطابق الشرط، وإن لم يتم العثور على عنصر، تُعيد قيمة -1 const numbers = [5, 12, 8, 130, 44]; const index = numbers.findIndex(num => num > 10); console.log(index); حسب الشرط الرقم 12 هو أول رقم أكبر من 10 ، وفهرسه هو 1. بالنسبة لـ findOne فلا توجد دالة في جافاسكريبت بذلك الاسم، وهي خاصة بقاعدة البيانات MongoDB للبحث عن أول مستند يطابق استعلام معين في قاعدة البيانات. db.student.findOne({}) ستُعيد أول مستند مباشرًة لأننا حددنا كائن الشرط على أنه فارغ. بينما لو كتبت: db.student.findOne({ name: "Zen" }) ستُعيد أول مستند به خاصية name بقيمة Zen اقتباس
0 ياسر مسكين نشر 27 مايو أرسل تقرير نشر 27 مايو بتاريخ 1 ساعة قال Hxfhf Ucicic: اقصد في ماذا نستخدمهم الدوال find وfindIndex في لغة جافا سكريبت وfindOne في قواعد البيانات مثل MongoDB تستخدم للبحث عن عناصر داخل مجموعة بناء على شرط معين، ولكن يجب التنويه أنّ لكل منها هدف مختلف. فدالة find تستخدم في المصفوفات وتعيد أول عنصر يطابق الشرط المحدد، مما يجعلها مناسبة عندما نريد الوصول إلى كائن أو قيمة محددة من بين عدة عناصر. أما findIndex فهي تعيد فهرس أو كما نقول موقع أول عنصر يطابق الشرط، وليس العنصر نفسه، ونستخدمها عندما نحتاج إلى معرفة موضع العنصر داخل المصفوفة مثلا لتحديثه أو حذفه. لكن من جهة أخرى نرى أن findOne تستخدم عادة مع قواعد البيانات مثل MongoDB) وترجع أول مستند (document) يطابق الشرط المعطى، وهي مفيدة للبحث عن سجل واحد فقط مثل مستخدم معيّن أو منتج حسب معرف أو اسم. مثلا هنا على سبيل المثال في: const user = users.find(u => u.id === 5); لاحظ أنه يعيد الكائن نفسه بينما هنا: users.findIndex(u => u.id === 5); سيعيد الرقم مثل 2، أي موقعه فقط بينما في MongoDB: db.users.findOne({ id: 5 }) سيعيد أول سجل يطابق هذا الشرط من قاعدة البيانات. اقتباس
السؤال
Zen Eddin Allaham
اريد شرح مفصل لدالات find & findIndex & findOne
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.