Javascript 为什么它返回未定义的值?
我需要生成一个随机值,除了其他已定义的值外,它可以工作,但有时“selectedTroop()”方法返回一个未定义的值Javascript 为什么它返回未定义的值?,javascript,Javascript,我需要生成一个随机值,除了其他已定义的值外,它可以工作,但有时“selectedTroop()”方法返回一个未定义的值 var-troopIDs=[1,2,3,4]; const exceptedTroops=[1,2,3]; 函数随机数(最小值、最大值){ 返回Math.floor((Math.random()*max)+min); } 函数selectedTroop(){ var兵力=兵力[兰特(1,兵力长度)]; 对于(a=0;a
var-troopIDs=[1,2,3,4];
const exceptedTroops=[1,2,3];
函数随机数(最小值、最大值){
返回Math.floor((Math.random()*max)+min);
}
函数selectedTroop(){
var兵力=兵力[兰特(1,兵力长度)];
对于(a=0;a log(selectedTroop())代码>数组的基本规则是从0开始计算索引。这意味着在troopIDs
中,第一个元素位于索引0处,第二个元素位于索引1处,第三个元素位于索引2处,第四个元素位于索引3处
这意味着您的随机数不能大于3,因为您只定义了第三个索引之前的元素。您将得到一个未定义的
,因为您检查的是1-4而不是0-3的随机数。这就解决了问题:
var troop = troopIDs[rand(0, troopIDs.length - 1)];
我们根据从0(数组的开始)到长度减1的随机数获取数组中的元素。你可能会问为什么减1?这是因为length属性返回数组中的元素数。在当前的troopIDs
情况下,共有4个元素。但是请记住,您只能检查第三个索引,因为我们从0开始计算数组元素。这意味着我们可以将数组的长度减去1,得到数组中的最后一个元素
希望这有帮助
数组的基本规则是从0开始计算索引。这意味着在troopIDs
中,第一个元素位于索引0处,第二个元素位于索引1处,第三个元素位于索引2处,第四个元素位于索引3处
这意味着您的随机数不能大于3,因为您只定义了第三个索引之前的元素。您将得到一个未定义的
,因为您检查的是1-4而不是0-3的随机数。这就解决了问题:
var troop = troopIDs[rand(0, troopIDs.length - 1)];
我们根据从0(数组的开始)到长度减1的随机数获取数组中的元素。你可能会问为什么减1?这是因为length属性返回数组中的元素数。在当前的troopIDs
情况下,共有4个元素。但是请记住,您只能检查第三个索引,因为我们从0开始计算数组元素。这意味着我们可以将数组的长度减去1,得到数组中的最后一个元素
希望这有帮助
为什么它返回未定义的值
如果rand(1,troopIDs.length)
生成的数组索引超出troopIDs
的范围,它将返回undefined
。数组索引是基于0的:
var troopIDs = [1, 2, 3, 4];
// array index 0 1 2 3
即,长度4
数组中的最高索引为3
让我们看看rand
返回的内容:
Math.random()
返回[0,1)
范围内的值(即,[
和]
表示该值包含在Interval中,(
和)
表示该值被排除在外。换句话说,0
为什么它返回未定义的值
如果rand(1,troopIDs.length)
生成的数组索引超出了troopIDs
的范围,它将返回undefined
。数组索引基于0:
var troopIDs = [1, 2, 3, 4];
// array index 0 1 2 3
即,长度4
数组中的最高索引为3
让我们看看rand
返回的内容:
Math.random()
返回一个在[0,1)
范围内的值(即,[
和]
表示该值包含在interval中,(
和)
表示该值被排除在外。换句话说,0如何调用这些函数?“为什么它返回未定义的值?”?“如果rand(1,troopIDs.length)
生成的数组索引超出了troopIDs
的范围,它将返回undefined
。请记住,最高的数组索引是troopIDs.length-1
,而不是troopIDs.length
。如何调用这些函数?为什么它返回未定义的值?”?如果rand(1,troopIDs.length),它将返回undefined
生成的数组索引超出了troopIDs
的范围。请记住,最高的数组索引是troopIDs.length-1
,而不是troopIDs.length
。我对数组的长度有很多困惑,因为实际的元素列表从1开始,这就是问题所在,感谢您的解决方案。我有很多困惑由于实际的元素列表是从1开始的,这就是问题所在,感谢您的解决方案。