Rumah > Soal Jawab > teks badan
Untuk mencari nilai maksimum tatasusunan, cara mudah ialah
Math.max.apply(null, myArray)
Walau bagaimanapun, andaikan myArray
包含复数,并且每个复数都有一个方法 magnitude
来计算复数的长度,是否有一种简单的方法可以找到 myArray
中条目的最大值?我当然可以做一个 loop
atau fungsi, tetapi tekaan saya ialah javascript mempunyai penyelesaian satu baris yang bagus...
Berikut ialah coretan kod pendek dengan semua elemen:
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
P粉8462943032024-04-04 11:41:14
Akan mencadangkan perkara yang sama, tetapi juga berikan kod itu sedikit sintaks moden, jadi Tanpa ragu kalahkan saya, tetapi ia berfungsi menggunakan peta:
class Complex { constructor(real, imag) { this.real = real; this.imag = imag; } magnitude() { return Math.sqrt(this.real * this.real + this.imag * this.imag); }; } let a = [1, 2, 3] ra = Math.max(...a) // works fine var b = [new Complex(1, 2), new Complex(1, 3), new Complex(1, 4)]; rb = Math.max(...b.map(x => x.magnitude())); console.log(ra) console.log(rb) // works now
Ya, anda boleh menggunakan sintaks sambungan dan bukannya apply, kurungan bukannya Array baharu, dan anda boleh menggunakan sintaks kelas kerana Kompleks sebenarnya adalah kelas. < /p>
P粉3065239692024-04-04 10:33:44
Boleh guna Array#map
< /a> 创建一个幅度数组以应用 Math.max
.
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); }; let b = [new Complex(1,2), new Complex(1,3), new Complex(1,4)]; let res = Math.max(...b.map(x => x.magnitude())); console.log(res);