Um den Maximalwert eines Arrays zu ermitteln, gibt es eine einfache Möglichkeit:
Math.max.apply(null, myArray)
Angenommen myArray
包含复数,并且每个复数都有一个方法 magnitude
来计算复数的长度,是否有一种简单的方法可以找到 myArray
中条目的最大值?我当然可以做一个 loop
oder eine Funktion, vermute ich jedoch, dass Javascript eine schöne einzeilige Lösung hat ...
Hier ist ein kurzer Codeausschnitt mit allen Elementen:
function Complex(re, im) { this.real = re; this.imag = im; } Complex.prototype.magnitude = function() { return Math.sqrt(this.real * this.real + this.imag * this.imag); }; var a = new Array(1, 2, 3); ra = Math.max.apply(null, a); // works fine var b = new Array(new Complex(1, 2), new Complex(1, 3), new Complex(1, 4)); rb = Math.max.apply(null, b) console.log(ra) console.log(rb) //NaN without surprise
本来打算提出同样的建议,也给代码提供了一点现代语法,所以Unmitigated打败了我,但是可以使用map:
是的,您可以使用扩展语法代替 apply,使用括号代替 new Array,并且您可以使用类语法,因为 Complex 实际上是一个类。
您可以使用
Array#map
创建一个幅度数组以应用Math.max
。