在变量中存储最大值的惯用方法?

kyl*_*oki 1 javascript node.js typescript reactjs

假设您有变量let maximum = 0;并且您执行以下操作:

for (let someObject of Objects) {
  maximum = someObject.value > maximum ? someObject.value : maximum;
}
Run Code Online (Sandbox Code Playgroud)

我认为这段代码非常难看。目标只是maximum在出现更大的值时覆盖。但是,要做到这一点,您必须同时重复someObject.valuemaximum各两次,这是冗长和恼人的阅读。

我的问题:有没有更惯用或更优雅的方式来写这个?

这不起作用,但是,如果>>不是按位运算符而是其他东西,则可以编写:

maximum >> someObject.value;
Run Code Online (Sandbox Code Playgroud)

这要优雅得多。打字稿中是否存在这样的东西?

Cer*_*nce 6

映射并传播到Math.max

const maximum = Math.max(0, ...Objects.map(o => o.value));
Run Code Online (Sandbox Code Playgroud)

  • @jfriend00 我不认为这个问题是在询问优化性能,而是惯用或优雅的。JavaScript 中几乎所有函数式编程技术最终都会创建临时数组。 (3认同)