第一个Javascript程序.我究竟做错了什么?

Ami*_*die 3 javascript

我终于开始用Javascript创建我的第一个小练习程序了.我知道它并不优雅.我已经完成了大部分代码的工作,但是当我运行它几次时,我仍然会得到一个"未定义"的字符串.我不知道为什么.有人会友好地向我解释这个未定义的来源吗?

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);
Run Code Online (Sandbox Code Playgroud)

Ale*_*yne 5

数组的索引为零.为1索引分配值时,0会创建一个索引,没有值(undefined).

var arr = new Array();
arr[1] = 'hi!';
console.log(arr); // [undefined, "hi!"]
console.log(arr.length) // 2
Run Code Online (Sandbox Code Playgroud)

长度是2,检查出来.你以为你在那个数组中有一个项目,但长度是2.

通常,自己不更容易管理数组索引.由于多种原因,数组文字语法通常是首选.

var arr = [];
arr.push('hi!');
console.log(arr); // ["hi!"]
console.log(arr.length) // 1
Run Code Online (Sandbox Code Playgroud)

或者直接创建包含其中项目的数组,非常方便.

var arr = [
  "hi",
  "there!"
];
console.log(arr); // ["hi", "there"]
console.log(arr.length) // 2
Run Code Online (Sandbox Code Playgroud)

一旦你正确地制作了数组,你可以得到一个简单的随机项:

var arr = ['a','b','c'];
var index = Math.floor(Math.random() * arr.length);
console.log(arr[index]); // "a", "b" or possibly "c"
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为var index将通过介于0.0和之间的随机值计算,但不包括1.0时间3(数组的长度).哪个可以给你一个0,1或一个2.

所以arr在这里,有3物品,一个在0一个,一个在1,一个在2.

学习从零开始处理数组可能会非常棘手.你有点习惯了.最终.


这里使用这些技巧的一个工作示例:http://jsfiddle.net/du5Jb/

我改变了数组的声明方式,并删除了不需要+1的var pickerX计算.