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

السؤال

نشر

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

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

        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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...