代码之家  ›  专栏  ›  技术社区  ›  Milan

在javascript中显示两个最小值

  •  0
  • Milan  · 技术社区  · 11 月前

    这是一个数组示例,我想从数组中的.value中找到最小值,但当我尝试这样做时,for循环首先给我实际的最小值,然后用另一个值覆盖,这个值不是最小值,而是倒数第二个最小值
    `

    const AlzheimerData = [
        {
            "location": "world",
            "year": "2000",
            "value": "9.557819"
        },
        {
            "location": "world",
            "year": "2001",
            "value": "10.267346"
        },
        {
            "location": "world",
            "year": "2002",
            "value": "10.8148"
        },
        {
            "location": "world",
            "year": "2003",
            "value": "11.329527"
        }
    ]
    
    var alzehemersmin = Number.MAX_VALUE;
    
    for( data of AlzheimerData){
        if(data.value < alzehemersmin){
            alzehemersmin = data.value;
        }
        console.log(alzehemersmin);
    }
    
    output in console :
    
    9.557819  --- Alzheimer.js:156:13 -- the real minimum value
    10.267346 --- Alzheimer.js:156:13 -- the overided minimum value
    

    我只希望得到第一个真正的最小值

    3 回复  |  直到 11 月前
        1
  •  0
  •   Amir Popovich    11 月前

    这可以在一条直线上完成:

    const alzheimerData = [
        {
            "location": "world",
            "year": "2000",
            "value": "9.557819"
        },
        {
            "location": "world",
            "year": "2001",
            "value": "10.267346"
        },
        {
            "location": "world",
            "year": "2002",
            "value": "10.8148"
        },
        {
            "location": "world",
            "year": "2003",
            "value": "11.329527"
        }
    ];
    
    const minValue = Math.min(...Object.values(alzheimerData).map(({value}) => parseFloat(value)));
    
    document.write(`The minimum value is: ${minValue}`);

    阅读更多关于:

    1. Spread operator
    2. Destructing assignment
        2
  •  0
  •   Vusal Huseynov    11 月前

    因为你是 比较不浮点数的字符串 首先,将data.value转换为浮点数,然后比较它们以找到最小值。

    const AlzheimerData = [...]
    
    var alzehemersmin = Number.MAX_VALUE;
    
    for( data of AlzheimerData){
        const value = Number.parseFloat(data.value)
        alzehemersmin = Math.min(value,alzehemersmin)
    }
    
    console.log(alzehemersmin);
    
        3
  •  0
  •   Haluk    11 月前

    使用Math函数可能是另一种选择;

    const AlzheimerData = [
        {
            "location": "world",
            "year": "2000",
            "value": "9.557819"
        },
        {
            "location": "world",
            "year": "2001",
            "value": "10.267346"
        },
        {
            "location": "world",
            "year": "2002",
            "value": "10.8148"
        },
        {
            "location": "world",
            "year": "2003",
            "value": "11.329527"
        }
    ]
    
    function findMin(key) {
      const datas = AlzheimerData.map((node) => node[key]);
      return Math.min(...datas)
    }
    console.log(findMin('value'));