Back to js-datatype-foundation
05-train-coach.js
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