我正在研究此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
的作用。
如果commands
是这样的二维数组:
[[2,5,4] [4,4,1] [1,7,3]]
v[0]
是什么意思,对-1
这样的v[0] -1
意味着什么?
答案 0 :(得分:3)
您的代码只是访问commands
内每个数组的索引
[[2,5,4], [4,4,1], [1,7,3]].forEach(arrayV => console.log(arrayV));
.as-console-wrapper { max-height: 100% !important; top: 0; }
v[0]
只是获得每个数组的第一个索引
[[2,5,4], [4,4,1], [1,7,3]].forEach(arrayV => console.log(arrayV[0]));
.as-console-wrapper { max-height: 100% !important; top: 0; }
而且,v[0] - 1
仅将1
减去数组v
上的第一个值
[[2,5,4], [4,4,1], [1,7,3]].forEach(arrayV => console.log(arrayV[0] - 1));
.as-console-wrapper { max-height: 100% !important; top: 0; }
函数Array.prototype.map()
遍历数组并将每个元素传递给处理程序。就您而言,是从每个索引传递数组。
答案 1 :(得分:2)
这是什么意思
v[0]
这将从名为v
的数组中获取第一个元素。
-1
这与数组v
中的第一个元素相距1。
答案 2 :(得分:2)
如果commands
是[[2,5,4],[4,4,1],[1,7,3]]
然后在commands.map( v => {})
的上下文中,v[0]
不是数组;这是数字之一。 map()
将获取每个子数组并将其分配给v
,因此,当您访问v[0]
时,您将获得子数组的第一个元素:
let commands=[[2,5,4],[4,4,1],[1,7,3]]
let m = commands.map(v => {
console.log("v[0]:", v[0])
// we don't know what array is so not sure what to return
//return array.slice(v[0] -1, v[1]).sort((a, b) => a - b).slice(v[2] -1, v[2])[0];
return "some value"
});
答案 3 :(得分:1)
详细解释杰克的答案,我认为OP的困惑来自忽略map
函数的影响,即:
map()
方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。因此,有问题的函数将被调用三次:首先使用[2,5,4],
,然后使用[4,4,1]
,依此类推。因此,意识到这一点,现在编写的代码段就很有意义:v[0]-1
第一次等于1
,依此类推。