我有一个多行变量,想要选择一个随机行:
$.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
,在两种情况下都是数字。关于如何解决这个问题的任何想法?
答案 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]);
答案 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());