提前致谢。我在JavaScript中有一个概念问题;
function rand(x,z)
{ return x + Math.floor((z-x+1)*Math.random()); }
function getLetter()
{ return ['a', 'b', 'c', 'd', 'e', 'f'][rand(0,5)]; }
console.log(getLetter()); // f // a // c .....
我无法理解getLetter()
函数如何通过返回两个数组来记录随机选择的字母。如果我反转数组顺序,它将作为undefined
登录到控制台。
最终,我之前没有看过这种语法,它让我措手不及。 getLetter()
函数的行为与.map()
和.filter()
方法的行为方式相同吗?
答案 0 :(得分:3)
将返回值视为从数组中随机选取的行:
var letters = ['a', 'b', 'c', 'd', 'e', 'f']
像
Array (
0 => 'a',
1 => 'b',
2 => 'c',
3 => 'd',
4 => 'e',
5 => 'f'
)
[rand(0,5)]
是行选择器(从第一行id到最后一行id的随机数,从0到5)。
您的getLetter()
功能可以被视为:
function getLetter() {
var letters = ['a', 'b', 'c', 'd', 'e', 'f'];
return letters[rand(0,5)];
}
答案 1 :(得分:1)
rand
返回传入的两个数字之间的随机整数(包含 - 0
和5
是有效的返回值,以及它们之间的任何整数。)
getLetter
利用它作为在包含六个字母的字母数组中获取随机索引的方法。所以这个:
['a', 'b', 'c', 'd', 'e', 'f'][rand(0,5)]
致电rand
。让我们假装它返回2
。那么我们就有了:
['a', 'b', 'c', 'd', 'e', 'f'][2]
这是阵列中的第三项,所以' c'归还。
答案 2 :(得分:1)
没有两个阵列。有一个数组并使用括号表示法引用数组中的索引。以下是代码的基本功能:
function getLetter() {
var options = ['a', 'b', 'c', 'd', 'e', 'f'], //defined array
randomNumber = rand(0,5), //generate random number
selection = options[randomNumber]; //reference index with the random number
return selection; //return the value
}
答案 3 :(得分:0)
您的getLetter
函数实际上正在返回单维数组的元素。基本上它是创建一个包含6个字符的数组(通过f),然后返回由rand
函数生成的索引所指向的数组。
反向(return [rand(0,5)]['a', 'b', 'c', 'd', 'e', 'f'];
)不起作用,因为在这种情况下生成的数组对象是一个单元素数组(包含0到5之间的随机数)。
答案 4 :(得分:0)
rand
函数只返回包含间隔[0, 5]
中的数字。
getLetter
只会返回['a', 'b', 'c', 'd', 'e', 'f']
中由rand
生成的随机字符的charcater。
['a', 'b', 'c', 'd', 'e', 'f']
是一个数组,另一方面,expression[x]
将元素放在表达式数组的x
索引处,从零开始。