在变量中存储最大值的惯用方法?
假设您有变量let maximum = 0;并且您执行以下操作:
for (let someObject of Objects) {
maximum = someObject.value > maximum ? someObject.value : maximum;
}
我认为这段代码非常难看。目标只是maximum在出现更大的值时覆盖。但是,要做到这一点,您必须同时重复someObject.value和maximum各两次,这是冗长和恼人的阅读。
我的问题:有没有更惯用或更优雅的方式来写这个?
这不起作用,但是,如果>>不是按位运算符而是其他东西,则可以编写:
maximum >> someObject.value;
这要优雅得多。打字稿中是否存在这样的东西?
回答
映射并传播到Math.max:
const maximum = Math.max(0, ...Objects.map(o => o.value));
- @jfriend00 I don't see the question as asking about optimizing performance but as being idiomatic or elegant. Almost all functional programming techniques in JavaScript will end up creating temporary arrays.