Vehicle[cachedVehicle][vVehicle] = cachedVehicle,
Das ist ganz schönes Doppelgemoppel.
Wenn der index schon die vehicleid ist, wieso nochmal den Wert speichern, denn um an den Wert zu kommen, brauchst du ja den index
if(Vehicle[i][vVehicle])continue;
Diese Zeile ist falsch. Weil, wieso denn i?
Macht keinen Sinn, es kann kein Index doppelt indexiert werden, da das Fahrzeug einen eindeutigen Rückgabewert liefert, also lösch diese Zeile in beiden Schleifen