Maison  >  Questions et réponses  >  le corps du texte

Utiliser les méthodes de apply

Pour trouver la valeur maximale d'un tableau, un moyen simple est

Math.max.apply(null, myArray)

Cependant, en supposant myArray 包含复数,并且每个复数都有一个方法 magnitude 来计算复数的长度,是否有一种简单的方法可以找到 myArray 中条目的最大值?我当然可以做一个 loop ou une fonction, mais je suppose que javascript a une belle solution en une seule ligne...

Voici un court extrait de code avec tous les éléments :

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 Il y a quelques jours301

répondre à tous(2)je répondrai

  • P粉846294303

    P粉8462943032024-04-04 11:41:14

    J'allais suggérer la même chose, mais aussi donner au code un peu de syntaxe moderne, donc Unmitigated m'a devancé, mais cela fonctionne en utilisant map :

    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

    Oui, vous pouvez utiliser la syntaxe d'extension au lieu de apply, des parenthèses au lieu de new Array, et vous pouvez utiliser la syntaxe de classe car Complex est en fait une classe. < /p>

    répondre
    0
  • P粉306523969
  • Annulerrépondre