Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS括号符号说明_Javascript_Arrays_Iteration - Fatal编程技术网

Javascript JS括号符号说明

Javascript JS括号符号说明,javascript,arrays,iteration,Javascript,Arrays,Iteration,提前谢谢。我有一个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()函数如何通

提前谢谢。我有一个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()
函数如何通过返回两个数组来记录随机选择的字母。如果我颠倒数组顺序,它将作为
未定义的
记录在控制台中


最终,我以前从未见过这种语法,这让我措手不及。
getLetter()
函数的行为是否与
.map()
.filter()
方法相同?

将返回值作为从数组中随机选取的行:

var letters = ['a', 'b', 'c', 'd', 'e', 'f']

[rand(0,5)]
是行选择器(从第一行id到最后一行id的随机数,从0到5)

您的
getLetter()
函数可以看作:

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

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


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

rand
返回传入的两个数字之间的随机整数(包括--
0
5
是有效的返回,中间的任何整数也是有效的)

getLetter
利用它作为一种手段,在包含六个字母的字母数组中获取随机索引。因此:

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

调用
rand
。让我们假设它返回
2
。那么我们有:

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


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

没有两个数组。只有一个数组,使用括号表示法引用数组中的索引。下面是代码的基本功能:

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
}

rand
函数只是返回包含区间
[0,5]
中的一个数字

getLetter
将只返回
['a','b','c','d','e','f']
中由
rand
生成的随机字符处的字符


['a',b',c',d',e',f']
是一个数组,
表达式[x]另一方面,
是从表达式数组的
x
索引中获取元素从零开始

没有返回两个数组的掌心啊,是的!括号表示法!我现在觉得有点傻,因为我习惯使用
表示法作为标识符。@anied@VHS@Matiboux你的答案是吗lped我巩固了这个想法,现在我正在尝试使用括号和圆点符号的不同方法。这是一种可靠的推杆方式。谢谢!没问题!!;3
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
}