Back to js-datatype-intermediate
02-chai-dukaan-menu.js
JavaScript
1/**
2 * ☕ Raju ki Chai Dukaan - Menu Formatter
3 *
4 * Raju bhai ne apni chai dukaan ka menu digitize karna decide kiya hai.
5 * Items ka array milega, aur tujhe ek formatted menu string banana hai
6 * jisme har item ka naam UPPERCASE mein ho aur price ke saath likha ho.
7 *
8 * Rules:
9 * - items ek array hai of objects: [{ name: "masala chai", price: 15 }, ...]
10 * - Har item ka naam toUpperCase() karo
11 * - Format: "NAAM - Rs.PRICE" (e.g., "MASALA CHAI - Rs.15")
12 * - Saare formatted items ko " | " se join karo
13 * - Items jinka price 0 ya negative hai, unhe skip karo (filter out)
14 * - Items jinka naam empty string hai ya string nahi hai, unhe bhi skip karo
15 * - Hint: Use Array.isArray(), filter(), map(), join(), toUpperCase()
16 *
17 * Validation:
18 * - Agar items array nahi hai ya empty hai, return ""
19 *
20 * @param {Array<{name: string, price: number}>} items - Menu items
21 * @returns {string} Formatted menu string
22 *
23 * @example
24 * formatChaiMenu([{ name: "masala chai", price: 15 }, { name: "samosa", price: 12 }])
25 * // => "MASALA CHAI - Rs.15 | SAMOSA - Rs.12"
26 *
27 * formatChaiMenu([])
28 * // => ""
29 */
30export function formatChaiMenu(items) {
31 if(!Array.isArray(items) || items.length === 0){
32 return ""
33 }
34
35 let filteredData = items.filter(t => t.price > 0 && t.name !== "" && typeof t.name === "string")
36
37 let newData = filteredData.map(t => {
38 return `${t.name.toUpperCase()} - Rs.${t.price}`
39 })
40
41 return newData.join(" | ")
42}
43