Scope Training Days Project


#1

I’ve worked through this project a couple times and can’t seem to get past this error…

/home/ccuser/workspace/learn-javascript_scope-training-days/trainingDays.js:38
return activities.join(’, ');
^

TypeError: Cannot read property ‘join’ of undefined
at getEventActivities (/home/ccuser/workspace/learn-javascript_scope-training-days/trainingDays.js:38:22)
at getEventMessage (/home/ccuser/workspace/learn-javascript_scope-training-days/trainingDays.js:56:84)
at Object. (/home/ccuser/workspace/learn-javascript_scope-training-days/trainingDays.js:59:1)
at Module._compile (module.js:571:32)
at Object.Module._extensions…js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:427:7)

Here’s my code…

const getAllEvents = () => {
return [‘Marathon’, ‘Triathlon’, ‘Decathlon’];
};

const getRandomEvent = () => {
const allEvents = getAllEvents();
const event = allEvents[Math.floor(Math.random() * allEvents.length)];
return event;
};

const getEventActivities = (event) => {
const allEvents = getAllEvents();

if (!allEvents.includes(event)) {
return null;
}

let activities;
if (event === ‘Marathon’) {
const activities = [‘Running’];
}
if (event === ‘Triathlon’) {
const activities = [‘Running’, ‘Cycling’, ‘Swimming’];
}
if (event === ‘Decathlon’) {
const activities = [‘Running’, ‘Hurdles’, ‘Javelin throw’, ‘Discus Throw’, ‘Shot put’, ‘High Jump’];
}
return activities.join(’, ');
};

const getDaysToTrain = (event) => {
const allEvents = getAllEvents();
if (!allEvents.includes(event)) {
return null;
}
const eventTrainingTimes = {‘Marathon’: 50, ‘Triathlon’: 100, ‘Decathlon’: 200 };
return eventTrainingTimes[event];
};

getRandomEvent();
const getEventMessage = () => {
const myEvent = getRandomEvent();

console.log('Your event is a ’ + myEvent + '. Your event activities consist of ’ + getEventActivities(myEvent) + ‘. You have ’ + getDaysToTrain(myEvent) + ’ days to train.’);
}

getEventMessage();


#2

You’ve got an error message telling you activities refers to undefined, so next you’d look at where you last assigned activities


#3

Ah, activities was still defined as const. got it, thanks!


#4

No, that’d get you something saying:
TypeError: Assignment to constant variable.
Or rather, it would if you tried to redefine it, which is not what you’re doing. That’s what const prevents.

What you’re doing is:

x = undefined;
x.join;

TypeError: Cannot read property 'join' of undefined

#5

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.