Задача №0

Дано два об'єкти. Обидва містять масив цілих чисел. При цьому в одному з них є функція знаходження суми, а в іншому – функція для знаходження добутку тих, які знаходяться між заданими мінімальним і максимальним значеннями. Використати обидва методи стосовно обидвох об'єктів (використати call, apply)


Рішення:

'use strict'

/** @type {(a: number, b: number) => number} */
function addTwoNumbers(a, b) {
  return a + b
}

const objectOne = {
  numbersList: [234, 3, -55, 45, 33, 2, 99, 294, -77],

  calcSum() {
    return this.numbersList.reduce(addTwoNumbers, 0)
  },
}

const objectTwo = {
  numbersList: [55, -23, 55, 45, 343, 52, -99, 24, -17],

  calcProductInRange(min = -Infinity, max = Infinity) {
    return this.numbersList.reduce(
      (product, number) =>
        min <= number && number <= max ? product * number : product,
      1,
    )
  },
}

const productInRangeObjOne = objectTwo.calcProductInRange.call(
  objectOne,
  -50,
  50,
)
console.log(
  '🎯 Добуток чисел з objectOne у діапазоні [-50, 50]:',
  productInRangeObjOne,
)

const productInRangeObjTwo = objectTwo.calcProductInRange(-50, 50)
console.log(
  '🎯 Добуток чисел з objectTwo у діапазоні [-50, 50]:',
  productInRangeObjTwo,
)

const sumObjOne = objectOne.calcSum()
console.log('➕ Сума чисел з objectOne:', sumObjOne)

const sumObjTwo = objectOne.calcSum.apply(objectTwo)
console.log('➕ Сума чисел з objectTwo:', sumObjTwo)