美文网首页
用最精炼的代码实现数组非零非负最小值 index

用最精炼的代码实现数组非零非负最小值 index

作者: 我是一个前端 | 来源:发表于2021-12-07 18:58 被阅读0次

    用最精炼的代码实现数组非零非负最小值 index

    // 例如:[10,21,0,-7,35,7,9,23,18] 输出 5, 7 最小
    function getIndex(arr){
    let index=null;
    ...
    return index;
    }

    我选择用reduce实现
    1、首先利用了reduce的第二个可选参数,作为第一次调用回调函数时传给pre的值,我选择了一个json,来存储最小的索引值和最小值{i:0,val:Infinity} 之所以val用了Infinity是不确定最小值能有多大。
    2、接下来就简单了,规则是大于等于0的最小值,三母来判断大于0且小于当前json的val,如果符合条件赋值操作,如果不符合返回上次pre。

    [1,2,3,4,5,6,9,-1].reduce((pre,cur,index)=>{
       return cur>0&&cur<pre['val']?{i:index,val:cur}:pre
    },{i:0,val:Infinity})
    

    接下来按照题目封装成函数

    function getIndex(arr){
      return arr.reduce((pre,cur,index)=>{
        return cur>0&&cur<pre["val"]?{val:cur, i:index}:pre;
      },{val:Infinity,i:0})
    }
    
    console.log(getIndex([22,31,41,53,6,0,-2,4,5,1,23]))
    
    image.png

    相关文章

      网友评论

          本文标题:用最精炼的代码实现数组非零非负最小值 index

          本文链接:https://www.haomeiwen.com/subject/oxyaxrtx.html