【问题标题】:max of array in JavaScript [duplicate]JavaScript中数组的最大值[重复]
【发布时间】:2017-12-20 18:21:35
【问题描述】:

给定一组值[1,2,0,-5,8,3],如何在 JavaScript 中获取最大值?

我知道我可以编写一个循环并跟踪最大值,但我正在寻找一种使用 JavaScript 语法的代码效率更高的方法。

【问题讨论】:

  • google 上“javascript 中数组的最大值”的第二个结果 ^
  • 同意,也许可以编辑另一个以包含单词 armax... 来自 python,这就是我本能地用谷歌搜索的结果...
  • 我会说它有一个合理的标题。无论语言如何,我都会搜索“ 中的最大数组”,但这只是我。

标签: javascript arrays node.js ecmascript-6


【解决方案1】:

您可以使用Math.maxES6 spread syntax (...)

let array = [1, 2, 0, -5, 8, 3];

console.log(Math.max(...array)); //=> 8

【讨论】:

  • 或者没有展开运算符Math.max.apply(false, arr)
  • 展开算子效率不高
  • @ibrahimmahrir 没有传播“操作员”,it's syntax
  • @ibrahimmahrir 是吗?我对reduce 进行了测试,它有时会赢有时会输。加上效率甚至都不重要,我们说的是不到 1 毫秒。
  • @ibrahimmahrir Math.max(...arr) 可能会比 Math.max.apply(null, arr) 慢一些,但远不及“效率不高”。整洁的 JS 特性几乎总是一种权衡。如果您有其他可以用数字证明的信息,请考虑在欺骗性问题中提供答案。尽管这个问题已经在 SO 上讨论过无数次,但新的好答案总是好的。
【解决方案2】:

您可以使用以下内容:

yourArray.reduce((max, value) => {return Math.max(max, value)});

reduce 将遍历数组中的值,每次返回当前值之前所有值的最大值。

【讨论】:

  • 或者只是 ( … ) => … 隐式返回 ...
  • 另外,为什么在展开语法存在的情况下要通过reduce操作的麻烦??
  • 您可能希望提供一些合理的默认值,当数组为空时返回,例如0-1-Infinity
猜你喜欢
  • 2022-01-09
  • 1970-01-01
  • 2016-07-31
  • 2021-01-16
  • 2019-09-03
  • 2021-06-12
  • 2020-03-31
  • 2018-05-21
  • 1970-01-01
相关资源
最近更新 更多