Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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 函数从值数组中查找最大值,而不使用'Math.max()`_Javascript_Arrays_Function_Max - Fatal编程技术网

Javascript 函数从值数组中查找最大值,而不使用'Math.max()`

Javascript 函数从值数组中查找最大值,而不使用'Math.max()`,javascript,arrays,function,max,Javascript,Arrays,Function,Max,我想创建一个函数,从一个值数组中查找最高/最大值。 例如:数字=[2,24,48,9,15,41]。 除了使用Math.max之外,如何进行此操作?试试以下方法: function maxVal(array){ let indexOfMax = 0; for (let i = 0; i < array.length; i++){ if (array[i] > array[indexOfMax]){ indexOfMax = i;

我想创建一个函数,从一个值数组中查找最高/最大值。 例如:数字=[2,24,48,9,15,41]。 除了使用Math.max之外,如何进行此操作?

试试以下方法:

function maxVal(array){
    let indexOfMax = 0;
    for (let i = 0; i < array.length; i++){
        if (array[i] > array[indexOfMax]){
            indexOfMax = i;
        }
    }
    return array[indexOfMax];
}
只需使用Array.prototype.reduce,它通常是进行简单数学运算(如获取平均值、范围或最小-最大值)的最聪明的方法

函数最大值{ 返回值.reduceprev,curr=>curr>prev?curr:prev } //或者不使用“…rest”参数直接使用数组 函数maxFromArrvalues{ 返回值.reduceprev,curr=>curr>prev?curr:prev } 有了这些,您就有了一些干净高效的代码:

max1,2,3,8435,32,0/=>432 //或用于数组 常量arr=[1,2,3,72,32,0] maxFromArrayarr/=>74 //或 最大…arr/=>74 常见陷阱 当比较数字时,通常总是测试一个正的is而不是isNot

检测阳性结果的电流是否更大?使用电流,而不是电流是否较小?use previous还将自动处理任何无法转换为正确数字的项目,将数字与NaN进行比较将始终返回false。12NaN都返回false

如果你换一种方式做,你可能会得到一个令人惊讶的结果: 在任何游乐场都可以随意运行此片段

函数最大值…值:数字[]{ 返回值.reduceprev,curr=>curr>prev?curr:prev } 函数naïveMax…值:number[]{ //注意,我们正在测试负片:电流是否更小? //如果**不是**,请使用当前值 返回值.reduceprev,curr=>curr21 控制台lognaïveMax…arr1/=>21 //到目前为止看起来不错 常量arr2=[89,-21,32,{},342] console.logmax…arr2/=>342 console.lognaïveMax…arr2/=>242 //尽管混入了一个对象,但看起来仍然可以,但是 常量arr3=[64,2,3,95,32,{}] 控制台。logmax…arr3/=>95 console.lognaïveMax…arr3/=>{} //哎呀,最大的数字突然变成了物体 看在完整性的份上,这是敏

函数最小值{ //再次测试是否为正,以过滤'NaN'-值 返回值.reduceprev,curr=>curr你已经试过什么了?你面临哪些具体问题?感谢您的考虑和支持。欢迎!我假设使用JavaScript,并将其添加到question的标记中。如果没有,就改变。谢谢你,祝你好运!您可以通过for-loop、forEach、reduce对数组值进行迭代……您需要与以前存储的值进行比较,因此,我将初始max变量设置为-无穷大。思考练习:您将如何在头脑/纸上实现这一点?很好!为什么不直接存储最大值?数组可以为空=代码有问题,但询问者并没有明确要求它。@iAmOren这是另一种可能性。我想这个人可能会发现在另一种情况下返回索引也很有用,所以我希望他们手头有它。好主意!询问者应该展示尝试,不要让我们猜测,也不要让我们做工作。。。