对这个JavaScript映射函数很好奇

对这个JavaScript映射函数很好奇,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我正在研究这个JS函数: function solution (array, commands) {      return commands.map (v => {          return array.slice(v[0] -1, v[1]).sort((a, b) => a - b).slice(v[2] -1, v[2])[0];      }); } 我不知道v[0]-1做什么 如果命令是如下所示的二维数组: [[2,5,4] [4,4,1] [1,7,3]] v

我正在研究这个JS函数:

function solution (array, commands) {
     return commands.map (v => {
         return array.slice(v[0] -1, v[1]).sort((a, b) => a - b).slice(v[2] -1, v[2])[0];
     });
}
我不知道
v[0]-1
做什么


如果
命令
是如下所示的二维数组:

[[2,5,4] [4,4,1] [1,7,3]]
v[0]
是什么意思?像
v[0]-1
那样对它做
-1
意味着什么?

它的意思是:

v[0]
这将从名为
v
的数组中获取第一个元素

-1
这将从数组
v
中的第一个元素中减去1

它的意思是:

v[0]
这将从名为
v
的数组中获取第一个元素

-1

这将从数组
v
中的第一个元素中减去1

如果
命令
[[2,5,4],[4,4,1],[1,7,3]

然后在
commands.map(v=>{})
的上下文中,
v[0]
不是数组;这是其中一个数字
map()
将获取每个子数组并将其分配给
v
,因此当您访问
v[0]
时,您将获得子数组的第一个元素:

let命令=[[2,5,4],[4,4,1],[1,7,3]]
设m=commands.map(v=>{
log(“v[0]:”,v[0])
//我们不知道是什么数组,所以不确定返回什么
//返回数组.slice(v[0]-1,v[1]).sort((a,b)=>a-b).slice(v[2]-1,v[2])[0];
返回“一些值”

});命令
[[2,5,4],[4,4,1],[1,7,3],

然后在
commands.map(v=>{})
的上下文中,
v[0]
不是数组;这是其中一个数字
map()
将获取每个子数组并将其分配给
v
,因此当您访问
v[0]
时,您将获得子数组的第一个元素:

let命令=[[2,5,4],[4,4,1],[1,7,3]]
设m=commands.map(v=>{
log(“v[0]:”,v[0])
//我们不知道是什么数组,所以不确定返回什么
//返回数组.slice(v[0]-1,v[1]).sort((a,b)=>a-b).slice(v[2]-1,v[2])[0];
返回“一些值”

});您的代码只是在
命令中访问每个数组的索引

[[2,5,4],[4,4,1],[1,7,3].forEach(arrayV=>console.log(arrayV))

.as console wrapper{max height:100%!important;top:0;}
您的代码只是访问
命令中每个数组的索引

[[2,5,4],[4,4,1],[1,7,3].forEach(arrayV=>console.log(arrayV))

。作为控制台包装{max height:100%!important;top:0;}
详细阐述Jack的答案,我认为OP的困惑源于忽略了
映射
功能的影响,即:

  • map()
因此,所讨论的函数将被调用三次:首先调用
[2,5,4],
,然后调用
[4,4,1]
,依此类推。因此,意识到这一点,现在编写的代码片段是有意义的:
v[0]-1
等于第一次
1
,依此类推

  • 现在,我已经说过了——“我讨厌遇到这样的代码”,当然我也像我们一样经常遇到这样的代码。不仅因为它很脆弱,还因为它让我觉得我偶然发现了一集《名字》中的曲调,原程序员在没有特殊原因的情况下试图最小化击键。我不喜欢“弄清楚”一段源代码是如何工作的

在详细阐述杰克的答案时,我认为OP的困惑源于忽视了
映射功能的影响,即:

  • map()
因此,所讨论的函数将被调用三次:首先调用
[2,5,4],
,然后调用
[4,4,1]
,依此类推。因此,意识到这一点,现在编写的代码片段是有意义的:
v[0]-1
等于第一次
1
,依此类推

  • 现在,我已经说过了——“我讨厌遇到这样的代码”,当然我也像我们一样经常遇到这样的代码。不仅因为它很脆弱,还因为它让我觉得我偶然发现了一集《名字》中的曲调,原程序员在没有特殊原因的情况下试图最小化击键。我不喜欢“弄清楚”一段源代码是如何工作的

map
遍历
命令中的每个项目。当前迭代/项目是
v
。因此,
v[0]
将引用其中一个子数组中的第一个项。
map
迭代
命令中的每个项。当前迭代/项目是
v
。因此,
v[0]
将引用其中一个子数组中的第一项。