DEV Community

Avraam Mavridis
Avraam Mavridis

Posted on

CodeTip - Javascript: Compare class instances

Many times we are in situations we want to compare instances of a class, aka objects, for example in case you develop a game and you want to compare instances of a gameobject, e.g. Car:

class Car {
  constructor(speed){
    this.speed = speed
  }
}

Let's say we want to compare instances of a car (or sort/filter an array of them). Obviously we can do:

const car1 = new Car(100)
const car2 = new Car(120)
const car3 = new Car(90)

console.log(car2.speed > car1.speed) // true

const sorted = [car1, car2, car3].sort((a,b) => {
  return a.speed - b.speed;
});

This works perfectly fine but we can do better, so we don’t have to type .speed every time we want to compare two cars, or sort/filter an array of them. We can define a valueOf method in the Car class, the method returns the “value” of the instance.

class Car {
  constructor(speed){
    this.speed = speed
  }

  valueOf(){
    return this.speed;
  }
}


const car1 = new Car(100)
const car2 = new Car(120)
const car3 = new Car(90)

console.log(car2 > car1) // true

Top comments (0)