【发布时间】:2014-12-17 06:02:59
【问题描述】:
目标是创建一个接收两个参数的函数:一个非重复数字数组和一个字符串(“值”或“索引”),并返回数组中的最小值或索引数组中的最小数,取决于第二个参数。
我确实需要练习回调和一些数组方法,所以我想出了:
function min(arr, toReturn) { // toReturn takes either 'value' or 'index'
return arr.reduce(function(sofar, current, index) {
return (toReturn == 'value') ? Math.min(sofar, current) : arr.indexOf(Math.min(sofar, current));
});}
console.log(min([7,22,3,4,5],'index'));
它在设置为 'value' 时有效,但为 'index' 呈现可怕的 -1。
我在语法方面哪里出错了?
【问题讨论】:
-
第二个参数是干什么用的?如果你需要找到最小数组元素的索引,第二个参数看起来很奇怪..
-
这是函数的本质:它查看第二个参数(字符串)以返回最小值本身('value')或最小值的索引('index')
-
哦,所以它只是一个标志,我们应该返回最小值本身还是它在数组中的索引?
-
是的。 toReturn == 'value' 时的最小值及其在 toReturn == 'index' 时在数组中的索引
标签: javascript arrays callback reduce