Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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查找数组中的最小十进制值_Javascript_Arrays - Fatal编程技术网

如何使用javascript查找数组中的最小十进制值

如何使用javascript查找数组中的最小十进制值,javascript,arrays,Javascript,Arrays,我有一个十进制数的数组,比如 var idArray = ["98.40", "111.46", "144.47", "180.48", "217.49", "284.50", "424.51", "571.52", "1887.53", "1960.54", "1972.55", "2118.56", "2167.57", "2467.58", "2480.59", "2488.60", "2662.61", "2671.62", "2767.63", "2982.64", "3168.6

我有一个十进制数的数组,比如

  var idArray = ["98.40", "111.46", "144.47", "180.48", "217.49", "284.50", "424.51", "571.52", "1887.53", "1960.54", "1972.55", "2118.56", "2167.57", "2467.58", "2480.59", "2488.60", "2662.61", "2671.62", "2767.63", "2982.64", "3168.65", "3263.66", "3295.67", "3369.68", "3579.69", "3592.70", "3600.71", "3605.72", "3620.73", "3646.74", "3852.75", "3857.76", "4031.77", "4489.78", "4975.79"]
我发现数组中的最小值如下所示

var result=Math.min.apply(null,idArray)

我的成绩是98.4分

是否有方法将数组中的实际值返回为98.40,请尝试:

var roundedResult = parseFloat(result).toFixed(2);

尾随零不重要,因此被截断。因此,除了将其存储为字符串之外,您别无选择

var result = Math.min.apply(null, idArray);
result = (result+"").test(/\.\d\d$/) ? result : result + "0"

如果它真的是一个数组,你可以用旧式的迭代方法,返回实际的字符串而不是解析的数字,这样小数的数量就不重要了

var-idArray=[“98.40”、“111.46”、“144.47”、“180.48”、“217.49”、“284.50”、“424.51”、“571.52”、“1887.53”、“1960.54”、“1972.55”、“2118.56”、“2167.57”、“2467.58”、“2480.59”、“2488.60”、“2662.61”、“2671.62”、“2767.63”、“2982.64”、“3168.65”、“3263.66”、“3295.67”、“3369.68”、“3579.69”、“3592.70”、“3600.71”、“3605.72”、“3620.73”、“3674”,"3852.75", "3857.76", "4031.77", "4489.78", "4975.79"];
var结果=idArray[0];
idArray.forEach(函数(x){
if(parseFloat(x)document.body.innerHTML=result;
您可以自己编写代码:

minInArr = function(arr) {
    var smallest = arr[0];

    for(var i=1; i<arr.length; i++){
        if(parseInt(arr[i],10) < smallest){
            smallest = arr[i];   
        }
    }

    return smallest
}
minInArr=功能(arr){
var最小值=arr[0];
对于(var i=1;i

应用将始终强制您的答案为一个数字,如果将其强制回字符串,则会丢失任何尾随的零。正如其他人所建议的,如果您知道您可以使用的小数点后始终有一个固定的位数

不依赖固定小数点数的更好解决方案是使用:

如果您不怕使用ES6语法(并非全部),您可以使用以下命令将其缩短:


除了这里已经介绍的方法外,还有两种方法(尽管其中一种与adeneo的方法非常相似)。一种是复制数组,对其进行排序,然后获得
0
索引值:

var min = idArray.slice().sort(function(a,b){return a - b})[0];
如果不关心对原始数组进行排序,请删除.slice()部分

另一种方法是使用Math.min获取值,然后使用一些在原始数组中查找该值。一些方法的好处是,它将在第一次匹配时停止:

var min, temp = Math.min.apply(Math, idArray);

idArray.some(function(v){ return temp == v? min = v : false});

console.log(min);

每个都有优点和缺点,选择最容易维护的。

这不是一个数组,在
{…}
的位置应该有
[…]
。因为
Math.min
对数字起作用
98.4
98.40
是相同的。如果“98.40”是您想要的,那么它就不是“最小十进制值”“您所查找的只是一个“表示最小十进制值的字符串”。最好使用一些字符串,使其在第一次匹配时停止。@RobG-它不应该在第一次匹配时停止,而是迭代所有字符串以找到最小的数字。但您可以从
Math.max.apply(…)中获得答案
如果你用min代替,那么就用一些来查找数组中的原始字符串。@RobG-不,
max
只得到最大的数字,我可以用
idArray[0]
代替,因为这无关紧要,但不确定
一些
会有什么帮助,你能举个例子吗?@adeneo using
idArray[0]
使用
Math会更好。max
会在整个数组上迭代一段额外的、不必要的时间。对于这么小的数组,这并不重要,但如果实际数据集更大,它可能会更大。啊,现在我明白了,我真的在想“我如何让indexOf进行非严格测试,我没有想到
有些
可以用来做同样的事情,+1。
result = idArray.reduce((prev, cur) => +prev < +cur ? prev : cur);
var arrayMin = function  (arr) {
  var i,
    len,
    prev, // prev and cur will hold numbers that are coerced from strings
    cur,  // once when they are first encountered
    minIndex; // keep track of the index of the smallest item rather
              // than copying a string every time we find a smaller number

  prev = +arr[0];
  minIndex = 0;
  for (i = 1, len = arr.length; i < len; i += 1) {
    cur = +arr[i];
    if (cur < prev) {
      prev = cur;
      minIndex = i;
    }
  }

  return arr[minIndex];
};

var result = arrayMin(idArray);
var min = idArray.slice().sort(function(a,b){return a - b})[0];
var min, temp = Math.min.apply(Math, idArray);

idArray.some(function(v){ return temp == v? min = v : false});

console.log(min);