I have finally gotten around to creating my first little practice program in Javascript. I know it’s not elegant as it could be. I have gotten most of this code to work, but I still get an “undefined” string when I run it a few times. I don’t know why. Would someone be kind enough to explain to me where this undefined is coming from?
var work = new Array();
work[1] = "product design";
work[2] = "product system design";
work[3] = "product social media post x5";
work[4] = "product Agent Recruitment system design";
work[5] = "product profile system design";
work[6] = "product Agent testing design";
work[7] = "product customer support";
work[8] = "product promotion";
var course = new Array();
course[1] = "javascript";
course[2] = "mandarin";
course[3] = "javascript practical-Code Academy";
course[4] = "javascript practical-learn Street";
course[5] = "mandarin practical-memrise";
course[6] = "new stuff with audiobooks";
var activity = new Array();
activity[1] = "listen to podcasts";
activity[2] = "chat online";
activity[3] = "Exercise";
activity[4] = "take a walk";
activity[5] = "call a friend";
var picker1 = Math.floor(Math.random()*3+1);
var picker2 = Math.floor(Math.random()*work.length+1);
var picker3 = Math.floor(Math.random()*course.length+1);
var picker4 = Math.floor(Math.random()*activity.length+1);
var group_pick = function(){
if(picker1 === 1){
return "Time to work on ";
} else if(picker1 === 2){
return "Time to learn some ";
} else if (picker1 === 3){
return "Lets relax and ";
} else {
return "error in group_pick";
}
};
var item_pick = function() {
if (picker1 === 1) {
return work[picker2] ;
} else if (picker1 === 2) {
return course [picker3] ;
} else if (picker1 === 3) {
return activity[picker4] ;
} else {
return "error in item_pick";
}
};
var task = group_pick() + item_pick();
document.write(task);
Array’s start with an index of zero. When you assign a value to the
1index, a0index is created you, with no value (undefined).Length is 2, check that out. You thought you had one item in that array but length is 2.
Usually it’s easier to not manage the array indices yourself. And the array literal syntax is usually preferred for a number of reasons.
Or just create the array with the items in it directly, very handy.
Once you are making the arrays properly, you can get a random item with simply:
This works because
var indexwill be calculated by a random value of between0.0and up to but not including1.0times3(the length of the array). Which can give you a0,1or a2.So this
arrright here, has3items, one at0, one at1, and one at2.Learning to address arrays from zero can be mentally tricky. You sort of get used to it. Eventually.
A working example using these tips here: http://jsfiddle.net/du5Jb/
I changed how the arrays are declared, and removed the unneeded
+1fromvar pickerXcalculations.