اذهب إلى المحتوى

السؤال

نشر

قمت بدالة أريد من خلالها إرجاع عنصر محدد (الذي قمت بالضغط عليه)

المشكل أن النتيجة تكون دائما أول عنصر من المصفوفة

const noteClicked = () => {
    setCreating(false)
    let selectedNote = notes.find((note,i)=> note.id === notes[i].id)
    console.log(selectedNote)
  }

شكرا جزيلا.

Recommended Posts

  • 0
نشر

يحدث ذلك لأن الشرط الذي كتبته داخل الـ 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)
}

 

  • 0
نشر
بتاريخ 4 دقائق مضت قال عمر قره محمد:

يحدث ذلك لأن الشرط الذي كتبته داخل الـ 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
نشر
بتاريخ منذ ساعة مضت قال محمود سعداوي:

هل يمكن استعمال filter.

المشكلة ليست في الـ find ولكن في الشيء الذي تبحث عنه، حيث انك لا توفر الـ id الذي تبحث عنه في الوظيفة. وبالتالي فالـ filter ستعطيك مشكلة شبيهة بالسابق

  • 0
نشر
بتاريخ 22 دقائق مضت قال عمر قره محمد:

المشكلة ليست في الـ find ولكن في الشيء الذي تبحث عنه، حيث انك لا توفر الـ id الذي تبحث عنه في الوظيفة. وبالتالي فالـ filter ستعطيك مشكلة شبيهة بالسابق

شكرا

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...