Rumah  >  Soal Jawab  >  teks badan

Gunakan kaedah daripada memohon

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粉718730956P粉718730956180 hari yang lalu302

membalas semua(2)saya akan balas

  • P粉846294303

    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>

    balas
    0
  • P粉306523969
  • Batalbalas