Как избавиться от повторного написани кода

Подскажите каким способом можно избавиться от дублирования вызова методов. Пытался использовать example.[flag]('dima1') но это не валидно. Править класс Example нельзя

class Example{
  and(text) {
    console.log(text, '-and')
  }
  or(text) {
    console.log(text, '-or')
  }
}

const example = new Example()

const flag = 'and'

if (flag === 'and') {
  example.and('dima1')
  example.and('dima2')
  example.and('dima3')
} else {
  example.or('dima1')
  example.or('dima2')
  example.or('dima3')
}

Ответы (2 шт):

Автор решения: Руслан Мамедов

Как вариант.

class Example{
    printWithPostfix(text, postfix) {
        console.log(`${text}-${postfix}`)
    }
}

const example = new Example()

let flag = 'and'

example.printWithPostfix('dima1', flag)
example.printWithPostfix('dima2', flag)
example.printWithPostfix('dima3', flag)

flag = 'or'
example.printWithPostfix('dima1', flag)
example.printWithPostfix('dima2', flag)
example.printWithPostfix('dima3', flag)

Если менять класс Example нельзя, то избавиться от дублирования можно следующим образом.

example['and']('dima1')
example['and']('dima2')
example['and']('dima3')
example['or']('dima1')
example['or']('dima2')
example['or']('dima3')
→ Ссылка
Автор решения: Dmitry

class Example {
  and(text) {
    console.log(text, '-and')
  }
  or(text) {
    console.log(text, '-or')
  }
}

const example = new Example();

const flag = 'and';

['dima1', 'dima2', 'dima3'].forEach(example[flag]);

→ Ссылка