JavaScript:数组未定义

时间:2011-04-07 11:34:14

标签: javascript jquery arrays

我有一个多行变量,想要选择一个随机行:

$.get('namelist.txt', function(nameList) {
  name = nameList.split('\n');
  var i = random();
  alert(name[i]); // this is undefined
});

random()函数返回一个随机数:

function random() {
  return Math.floor(Math.random()*201);
}

问题是警告说undefined。如果我用var i = 5替换第3行,它就可以了。我用i测试了typeof,在两种情况下都是数字。关于如何解决这个问题的任何想法?

5 个答案:

答案 0 :(得分:4)

您应该根据数组的长度生成一个随机数。 201可能超过阵列的最高指数。

您可以调整随机函数以接受长度:

function random(len) {
    return Math.floor(Math.random() * len);
}

然后像这样使用它:

var name = nameList.split('\n');
var i = random(name.length);
alert(name[i]);

Array documentation reference

答案 1 :(得分:1)

Thsi是因为名称是数组

其中可能包含3个元素

如果随机函数的值大于3,它将给你一个错误,就像你现在一样。

关于建议

首先不更改数组中的元素和随机函数生成的数字。

if (name.length< randomnumber)
{
  //do logic what you want 
}

答案 2 :(得分:0)

var i = Math.floor(Math.random()*name.length);

答案 3 :(得分:0)

nameList.txt中是否可能少于201行文本?

答案 4 :(得分:-1)

你试过吗

var i = parseInt(random());