Объект с функциями. Решение задачи

Помогите решить поставленную задачу. Вот условие: Сделайте объект с тремя функциями, каждая из которых будет принимать параметром массив с числами. Сделайте так, чтобы первая функция возвращала сумму элементов массива, вторая функция - сумму квадратов, а третья - сумму кубов. Но я что-то делаю не так, не пойму что.

Моё решение:

let math = {
  sum: function(arr) {
    return sum += elem
  },
  square: function(arr) {
    return elem * elem
  },
  cube: function(arr) {
    return elem * elem * elem
  },
};
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
  arr[elem];
}
alert(math.sum([1, 2, 3, 4, 5]));
alert(math.square([1, 2, 3, 4, 5]));
alert(math.cube([1, 2, 3, 4, 5]));


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

Автор решения: Darth

Для суммирования массива хорошо подходит метод reduce. Для возведения в степень не обязательно перемножать переменную на себя кучу раз, есть оператор возведения в степень (а в древние времена, когда его не было мы пользовались Math.pow).

const math = {
  sum(arr) {
    return arr.reduce((sum, elem) => sum + elem, 0);
  },
  square(arr) {
    return arr.reduce((sum, elem) => sum + elem ** 2, 0);
  },
  cube(arr) {
    return arr.reduce((sum, elem) => sum + elem ** 3, 0);
  },
};
console.log(math.sum([1, 2, 3, 4, 5]));
console.log(math.square([1, 2, 3, 4, 5]));
console.log(math.cube([1, 2, 3, 4, 5]));

→ Ссылка