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
Akan mencadangkan perkara yang sama, tetapi juga berikan kod itu sedikit sintaks moden, jadi Tanpa ragu kalahkan saya, tetapi ia berfungsi menggunakan peta:
Ya, anda boleh menggunakan sintaks sambungan dan bukannya apply, kurungan bukannya Array baharu, dan anda boleh menggunakan sintaks kelas kerana Kompleks sebenarnya adalah kelas.
Boleh guna
Array#map
创建一个幅度数组以应用Math.max
.