【问题标题】:Math.max() - if more elements are max?Math.max() - 如果更多元素是最大值?
【发布时间】:2014-10-17 18:56:45
【问题描述】:

对于我的测验,我希望得到所有答案中的最高数量。到目前为止它是有效的,但是当有 4 个答案并且 2 个说 A 是对的,两个说 B 是对的时,那么整体的组结果应该是错误的。所以我想知道,如果有不止一个最高元素:

示例: 数学.max(1,2,3,4) ---> 4 Math.max(2,2,0,0) ---> 2(我要知道最高元素不止一个)

谢谢,马克

【问题讨论】:

  • Math.max 返回最大值,不计算出现次数。
  • 您可以先删除所有重复项,然后执行 Math.Max()
  • 他想知道@MortenOC 有多少重复项。对吧,马克?
  • 但是如果他在 Math.Max.. 之前删除所有重复项,他每次都会得到最大值。让其。 2,1,2,2。只有 2,1 会回来,然后 2 是最大值。

标签: javascript math numbers max highest


【解决方案1】:

所以为此编写自己的函数,如下所示:

function maxFindAndCount(listOfNumbers) {
  var result = { max: null, count: 0 };
  result.max = Math.max(listOfNumbers);
  for (var l in listOfNumbers) {
    if (listOfNumbers[l] == result.max)
      result.count++;
  }
  return result;
}

用法:

var listOfNumbers = [1,2,3,4,4];
var result = maxFindAndCount(listOfNumbers);
var max = result.max;
var count = result.count;

【讨论】:

  • 警告:listOfNumbers 为此必须成为objectdeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。不要说arrays在Javascript中也是objects,我是说object
  • 你错了。它是这样工作的(有细微差别,但我猜他不会扩展数组原型,而且打字速度要快得多)。但是,如果您愿意,也可以使用经典的 for 循环 for (var l = 0; l < listOfNumbers.length; l++) {...
  • 数组是可枚举的类型。它只会遍历所有索引并最终添加属性。如果他不向这个数组添加任何属性,它将正常工作。
  • 好的。今天学习了。星期日。圣日。
  • 嗨,好主意,但 Math.max([1,2,3,4,4]) 将导致 NaN,因为它不能是数组。我该如何解决?
【解决方案2】:

对于这个答案,我假设您将答案放在一个数组中。

你可以先用这个函数求数组的最大值:

var maxValue = Math.max.apply(null, array);

然后您可以使用以下方法找到该值出现的次数:

array.sort();
var nrOfMaxValue = array.lastIndexOf(maxValue) - array.indexOf(maxValue);

希望这对你有用!

编辑:我只是想,如果您只想知道最大答案是否多次给出,您可以这样做,而不对数组进行排序:

var maxValue = Math.max.apply(null, array);
var onlyOnceAnswered = array.lastIndexOf(maxValue) == array.indexOf(maxValue);

【讨论】:

  • 它非常优雅,但我想知道它是否比我的代码更快。对于小数组当然完全不相关。打字少得多。 +1
  • 这对我来说效果最好。我真的很喜欢 onlyOnceAnswered 代码,它简单但实用。谢谢
【解决方案3】:
function highscores(arr){
    var max= Math.max.apply(Array, arr);
    return arr.filter(function(itm){
        return itm=== max;
    });
}

var A= [2, 3, 4, 4];

高分(A)

returned value: (Array)[4, 4]

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 2023-03-23
    • 2021-03-07
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多