satyacode
Background
JavaScript
1/**
2 * 🚂 Train Coach Finder - Array Search & Check
3 *
4 * Indian Railways ke train mein passengers dhundhne hain!
5 * Passenger list mein search karna hai — kaun hai, kaun nahi,
6 * sab confirmed hain ya nahi. Array search methods ka tour hai yeh!
7 *
8 * Data format: passengers = [
9 *   { name: "Rahul", coach: "S5", seat: 42, status: "confirmed" },
10 *   { name: "Priya", coach: "S3", seat: 15, status: "waitlisted" },
11 *   ...
12 * ]
13 *
14 * Methods to explore: .find(), .findIndex(), .some(), .every(), .filter()
15 *
16 * Functions:
17 *
18 *   1. findPassenger(passengers, name)
19 *      - .find() se passenger object dhundho by name (case-insensitive)
20 *      - Agar passengers array nahi hai ya name string nahi hai, return undefined
21 *      - Example: findPassenger([{name:"Rahul",coach:"S5",seat:42,status:"confirmed"}], "rahul")
22 *                 => {name:"Rahul", coach:"S5", seat:42, status:"confirmed"}
23 *
24 *   2. getPassengerIndex(passengers, name)
25 *      - .findIndex() se passenger ka position nikalo (case-insensitive)
26 *      - Agar passengers array nahi hai ya name string nahi hai, return -1
27 *      - Example: getPassengerIndex([{name:"Rahul"}, {name:"Priya"}], "Priya") => 1
28 *
29 *   3. isAnyWaitlisted(passengers)
30 *      - .some() se check karo ki koi bhi passenger "waitlisted" hai ya nahi
31 *      - Agar passengers array nahi hai ya empty hai, return false
32 *      - Example: isAnyWaitlisted([{status:"confirmed"}, {status:"waitlisted"}]) => true
33 *
34 * 
35 *   4. areAllConfirmed(passengers)
36 *      - .every() se check karo ki SAB passengers "confirmed" hain ya nahi
37 *      - Agar passengers array nahi hai ya empty hai, return false
38 *      - Example: areAllConfirmed([{status:"confirmed"}, {status:"confirmed"}]) => true
39 *
40 * 
41 *   5. getWaitlistedPassengers(passengers)
42 *      - .filter() se sirf "waitlisted" passengers return karo
43 *      - Agar passengers array nahi hai, return []
44 *      - Example: getWaitlistedPassengers([{name:"A",status:"confirmed"},{name:"B",status:"waitlisted"}])
45 *                 => [{name:"B", status:"waitlisted"}]
46 *
47 * @example
48 *   findPassenger(passengers, "Rahul")   // => { name: "Rahul", ... }
49 *   isAnyWaitlisted(passengers)          // => true/false
50 *   areAllConfirmed(passengers)          // => true/false
51 */
52export function findPassenger(passengers, name) {
53  if(!Array.isArray(passengers)|| typeof name !== "string"){
54    return undefined
55  }
56
57 return passengers.find(passenger => passenger.name.toLowerCase() == name.toLowerCase())
58}
59
60export function getPassengerIndex(passengers, name) {
61  
62  if(!Array.isArray(passengers) || typeof name !== "string"){
63    return -1
64  }
65
66  return passengers.findIndex(p => p.name.toLowerCase() == name.toLowerCase())  
67}
68
69export function isAnyWaitlisted(passengers) {
70  if(!Array.isArray(passengers) || passengers.length == 0){
71    return false
72  }
73  return passengers.some(p => p.status == "waitlisted")
74}
75
76export function areAllConfirmed(passengers) {
77  if(!Array.isArray(passengers)|| passengers.length == 0){
78    return false
79  }
80
81  return passengers.every(p => p.status == "confirmed")
82}
83
84export function getWaitlistedPassengers(passengers) {
85  if(!Array.isArray(passengers)){
86    return []
87  }
88  return passengers.filter(p => p.status == "waitlisted")
89}
90