محمود سعداوي2 نشر 20 نوفمبر 2022 أرسل تقرير نشر 20 نوفمبر 2022 قمت بدالة أريد من خلالها إرجاع عنصر محدد (الذي قمت بالضغط عليه) المشكل أن النتيجة تكون دائما أول عنصر من المصفوفة const noteClicked = () => { setCreating(false) let selectedNote = notes.find((note,i)=> note.id === notes[i].id) console.log(selectedNote) } شكرا جزيلا. 1 اقتباس
0 عمر قره محمد نشر 20 نوفمبر 2022 أرسل تقرير نشر 20 نوفمبر 2022 يحدث ذلك لأن الشرط الذي كتبته داخل الـ find : note.id === notes[i].id يكون صحيحاً من اجل اول عنصر في المصفوفة دائماً، ليس هذا فقط بل إنه صحيح لكل عناصر المصفوفة. ولأن الوظيفة find مصممة لتعيد اول عنصر يحقق الشرط فلذلك تعيد العنصر الأول دائماً. ولحل المشكلة يجب ان تحصل على الـ id بطريقة مختلفة، مثل إضافة الوظيفة التي تريدها عند انشاء العنصر وإضافة الـ id الخاص به لهذه الوظيفة كالتالي : Notes?.map(note => ( <dev onClick = {() => noteClicked(note.id) }> {note.text} </dev> )) const noteClicked = (id) => { setCreating(false) let selectedNote = notes.find((note,i)=> note.id === id) console.log(selectedNote) } 1 اقتباس
0 محمود سعداوي2 نشر 20 نوفمبر 2022 الكاتب أرسل تقرير نشر 20 نوفمبر 2022 بتاريخ On 20/11/2022 at 20:27 قال عمر قره محمد: يحدث ذلك لأن الشرط الذي كتبته داخل الـ find : note.id === notes[i].id يكون صحيحاً من اجل اول عنصر في المصفوفة دائماً، ليس هذا فقط بل إنه صحيح لكل عناصر المصفوفة. ولأن الوظيفة find مصممة لتعيد اول عنصر يحقق الشرط فلذلك تعيد العنصر الأول دائماً. ولحل المشكلة يجب ان تحصل على الـ id بطريقة مختلفة، مثل إضافة الوظيفة التي تريدها عند انشاء العنصر وإضافة الـ id الخاص به لهذه الوظيفة كالتالي : Notes?.map(note => ( <dev onClick = {() => noteClicked(note.id) }> {note.text} </dev> )) const noteClicked = (id) => { setCreating(false) let selectedNote = notes.find((note,i)=> note.id === id) console.log(selectedNote) } أظهر المزيد هل يمكن استعمال filter. اقتباس
0 عمر قره محمد نشر 20 نوفمبر 2022 أرسل تقرير نشر 20 نوفمبر 2022 بتاريخ On 20/11/2022 at 20:31 قال محمود سعداوي: هل يمكن استعمال filter. أظهر المزيد المشكلة ليست في الـ find ولكن في الشيء الذي تبحث عنه، حيث انك لا توفر الـ id الذي تبحث عنه في الوظيفة. وبالتالي فالـ filter ستعطيك مشكلة شبيهة بالسابق 1 اقتباس
0 محمود سعداوي2 نشر 20 نوفمبر 2022 الكاتب أرسل تقرير نشر 20 نوفمبر 2022 بتاريخ On 20/11/2022 at 20:34 قال عمر قره محمد: المشكلة ليست في الـ find ولكن في الشيء الذي تبحث عنه، حيث انك لا توفر الـ id الذي تبحث عنه في الوظيفة. وبالتالي فالـ filter ستعطيك مشكلة شبيهة بالسابق أظهر المزيد شكرا اقتباس
السؤال
محمود سعداوي2
قمت بدالة أريد من خلالها إرجاع عنصر محدد (الذي قمت بالضغط عليه)
المشكل أن النتيجة تكون دائما أول عنصر من المصفوفة
شكرا جزيلا.
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.