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

خطأ TypeError: Cannot read properties of undefined (reading '1') في جافاسكربت

SaraAlghamdi

السؤال

السلام عليكم ورحمة الله

كتبت برنامج مكتبه كتب بالجافا سكربت وعند التنفيذ يطلع لي هذا الخطأ 

        if(BooksInfo[i][1] == BookID){
                       ^

TypeError: Cannot read properties of undefined (reading '1')

 

وهذا هو الكود 


const BooksInfo = [];

//This function for add book in "BooksInfo" 
function addBook(BookID, BookTitle, Author, Price, Quantity){
    let newBook = {BookID,BookTitle,Author,Price,Quantity};
    BooksInfo.push(newBook);
}

//add new book in "BooksInfo" by use Function addBook 
addBook(1, "Start with Why","Simon Sinek", 80.0, 13);
addBook(2, "But how do it know", "J. Clark Scott", 59.9, 22);
addBook(3, "Clean Code", "Rober Cecil Martin", 50.0, 5);
addBook(4, "Zero to One", "Peter Thiel", 45.0, 12);
addBook(5, "You don't know JS", "Kyle Simpson", 39.9, 9);

// //console.table (BooksInfo);

// Find Book bY ID
function SearchID(BookID){
    for(let i=0 ; i < BooksInfo.length+1 ; i++){
        if(BooksInfo[i][1] == BookID){
            return BooksInfo[i];
        }
    }
}

console.log(SearchID(1)); 

 

ارجو مساعدتي في حل هذا الخطا 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

إذا قمنا بقراءة رسالة الخطأ سنجد أنها تخبرنا بأنه قمية الجزء التاي من الكود هي undefined 

BooksInfo[i][1]

و السبب في هذا هو أن المصفوفة BooksInfo تحتوي على كائنات (array of objects) أي أن الشيفرة التالية ستعيد لنا كائن جافاسكريبت

BooksInfo[i]

// output example 

{
  BookID: 1, 
  BookTitle: 'Start with Why', 
  Author: 'Simon Sinek', 
  Price: 80, 
  Quantity: 13
}

و في جافاسكريبت يمكننا الوصول لخصائص الكائنات بأحد الطرق التالية:

obj["key"] // اسم الكائن["الخاصية"]

 

obj.key // اسم الكائن.الخاصية

 

و بما أنك تحاولين الوصول لقيمة الخاصية BookID إذًا يجب تعديل السطر التالي

if(BooksInfo[i][1] == BookID){}

ليصبح:

if(BooksInfo[i]["BookID"] == BookID){}

// أو

if(BooksInfo[i].BookID == BookID){}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...