对这个JavaScript映射函数很好奇
我正在研究这个JS函数:对这个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
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]
将引用其中一个子数组中的第一项。