I have two arrays vehicles and routes, given below
const vehicles = [{ name: 'TukTuk', maxSpeed: 12 },
{ name: 'Bike', maxSpeed: 10 },
{ name: 'Car', maxSpeed: 20 }];
const routes = [{ name: 'routeOne' , distance: 18, allowedSpeed: 12 }
, {name: 'routeTwo', distance: 20, allowedSpeed: 10 }];
There is this rule, the vehicle would travel in the route's allowed speed even it can ride faster
That is covered written in this function
const getTravelTime = (vehicle, route) => {
return route.allowedSpeed < vehicle.maxSpeed ? (route.distance / route.allowedSpeed) : (route.distance / vehicle.maxSpeed);
};
The objective is to find the fastest route and vehicle for the Journey
I have a implementation which is not functional
const getFastestJourney = (vehicles,routes) => {
let fastestTime = Infinity;
let fastestRoute,fastestVehicle;
for(let i =0;i < vehicles.length; i++){
for(let j=0;j< routes.length;j++){
let travelTime = getTravelTime(vehicles[i],routes[j]);
if(travelTime < fastestTime){
fastestVehicle = vehicles[i];
fastestRoute = routes[j];
fastestTime = travelTime;
}
}
}
return {
route: fastestRoute,
vehicle: fastestVehicle,
};
};
how do I achieve that in the functional way?
Cartakes the preference since thevehiclesarray is already in that order. that is taken care of