Menu
CoddyTech
flag Ar iconالعربيةdown icon

دالة للبحث عن عنصر بواسطة ID

جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 65 من 73.

challenge icon

التحدي

سهل

لقد تم تزويدك بما يلي من التحدي السابق:

  • الواجهة العامة InventoryItem<T> مع الخصائص id و quantity و details
  • الدالة العامة addItem التي تضيف عناصر إلى مصفوفات المخزون
  • عناصر مخزون متنوعة ومصفوفات مخزون محدثة

قم بإنشاء دالة عامة تسمى findItemById تبحث عن عنصر في مصفوفة مخزون بواسطة معرفه (ID).

يجب أن تقوم الدالة بما يلي:

  • استخدام معامل نوع عام T
  • قبول معامل inventory من النوع InventoryItem<T>[]
  • قبول معامل id من النوع number
  • إرجاع العنصر الذي تم العثور عليه من النوع InventoryItem<T> أو undefined إذا لم يتم العثور عليه
  • أن يكون لها تعليق توضيحي صريح لنوع الإرجاع هو InventoryItem<T> | undefined

قم بإنشاء مخزونات اختبارية:

  • قم بإنشاء mixedBookInventory كمصفوفة تحتوي على:
    • عنصر بـ id: 10، و quantity: 3، و details: { title: "JavaScript Basics", author: "Alice Brown" }
    • عنصر بـ id: 11، و quantity: 7، و details: { title: "React Fundamentals", author: "Bob Wilson" }
    • عنصر بـ id: 12، و quantity: 2، و details: { title: "Node.js Guide", author: "Carol Davis" }
  • قم بإنشاء mixedElectronicInventory كمصفوفة تحتوي على:
    • عنصر بـ id: 20، و quantity: 5، و details: { brand: "Samsung", model: "Galaxy S23" }
    • عنصر بـ id: 21، و quantity: 1، و details: { brand: "Apple", model: "iPhone 15" }

اختبر دالتك واطبع المخرجات التالية:

  • ابحث عن العنصر ذو المعرف 11 في mixedBookInventory واطبع details.title للنتيجة (أو undefined إذا لم يتم العثور عليه)
  • ابحث عن العنصر ذو المعرف 20 في mixedElectronicInventory واطبع details.brand للنتيجة (أو undefined إذا لم يتم العثور عليه)
  • ابحث عن العنصر ذو المعرف 99 في mixedBookInventory واطبع النتيجة (يجب أن تكون undefined)
  • ابحث عن العنصر ذو المعرف 12 في mixedBookInventory واطبع quantity للنتيجة (أو undefined إذا لم يتم العثور عليه)
  • ابحث عن العنصر ذو المعرف 21 في mixedElectronicInventory واطبع details.model للنتيجة (أو undefined إذا لم يتم العثور عليه)
  • ابحث عن العنصر ذو المعرف 10 في mixedBookInventory واطبع id للنتيجة (أو undefined إذا لم يتم العثور عليه)
  • ابحث عن العنصر ذو المعرف 50 في mixedElectronicInventory واطبع النتيجة (يجب أن تكون undefined)

جرّب بنفسك

// Generic interface from previous challenge
interface InventoryItem<T> {
  id: number;
  quantity: number;
  details: T;
}

// Items from previous challenge
const bookItem: InventoryItem<{ title: string; author: string }> = {
  id: 1,
  quantity: 5,
  details: { title: "TypeScript Handbook", author: "John Doe" }
};

const electronicItem: InventoryItem<{ brand: string; model: string }> = {
  id: 2,
  quantity: 3,
  details: { brand: "TechCorp", model: "X100" }
};

const clothingItem: InventoryItem<{ size: string; color: string }> = {
  id: 3,
  quantity: 10,
  details: { size: "M", color: "Blue" }
};

// Generic function to add item to inventory
function addItem<T>(inventory: InventoryItem<T>[], newItem: InventoryItem<T>): InventoryItem<T>[] {
  return [...inventory, newItem];
}

// Create book inventory and new book
const bookInventory = [bookItem];
const newBook: InventoryItem<{ title: string; author: string }> = {
  id: 4,
  quantity: 2,
  details: { title: "Advanced TypeScript", author: "Jane Smith" }
};
const updatedBookInventory = addItem(bookInventory, newBook);

// Create electronic inventory and new electronic
const electronicInventory = [electronicItem];
const newElectronic: InventoryItem<{ brand: string; model: string }> = {
  id: 5,
  quantity: 1,
  details: { brand: "GadgetCorp", model: "Z500" }
};
const updatedElectronicInventory = addItem(electronicInventory, newElectronic);

// Print outputs
console.log(updatedBookInventory.length);
console.log(updatedBookInventory[1].details.title);
console.log(updatedBookInventory[1].details.author);
console.log(updatedElectronicInventory.length);
console.log(updatedElectronicInventory[1].details.brand);
console.log(updatedElectronicInventory[1].details.model);
console.log(updatedElectronicInventory[0].id);
console.log(updatedElectronicInventory[1].quantity);

جميع دروس مقدمة إلى TypeScript

تدرّب بنفسك: Playground لـ TypeScript