satyacode
Background
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