2017-03-06 36 views
-2

在此先感谢。我在JavaScript中有一个概念问题;JS支架符号说明

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()方法的行为方式相同吗?

+1

没有返回两个数组 – epascarello

回答

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的随机数到最后行号,从0到5)。

getLetter()功能可以被看作是:

function getLetter() { 
    var letters = ['a', 'b', 'c', 'd', 'e', 'f']; 
    return letters[rand(0,5)]; 
} 
+0

这是一个坚实的方式。谢谢! –

+0

没问题! ; 3 – Matiboux

0

getLetter功能实际上返回一维数组的元素。基本上它创建一个由6个字符组成的数组(通过f),然后返回由rand函数生成的索引指向的数组。

反向(return [rand(0,5)]['a', 'b', 'c', 'd', 'e', 'f'];)不起作用,因为在这种情况下生成的数组对象是一个元素数组(其中包含0和5之间的随机数)。

1

rand返回传入的两个数字之间的随机整数(包括 - 05是有效的返回值,因为它们之间有任何整数)。

getLetter利用它作为获取包含六个字母的字母数组中的随机索引的手段。所以这个:

['a', 'b', 'c', 'd', 'e', 'f'][rand(0,5)]

呼叫rand。假设它返回2。然后我们有:

['a', 'b', 'c', 'd', 'e', 'f'][2]

这是数组中的第三项,因此“C”返回。

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 
} 
+0

*脸掌*是的!支架符号!我现在感觉有点傻,因为我习惯于使用'。'符号作为标识符。 @anied @VHS @Matiboux你的答案帮助我巩固了这个想法,现在我正在玩弄不同的方式,我可以利用括号_和_点符号 –

0

rand功能只是在包容间隔[0, 5]返回一个数字。

getLetter只会返回['a', 'b', 'c', 'd', 'e', 'f']中的charcater,由rand产生的随机字符。

['a', 'b', 'c', 'd', 'e', 'f']是一个数组,expression[x]是在另一方面获取元件在表达阵列从零开始在x索引。