Gunakan kaedah daripada memohon
P粉718730956
P粉718730956 2024-04-03 21:41:46
0
2
462

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粉718730956
P粉718730956

membalas semua(2)
P粉846294303

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粉306523969

Boleh guna Array#map 创建一个幅度数组以应用 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);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan