Skip to content

Evolution von JavaScript I: Summe

Problem-Beschreibung

Es soll eine Funktion entwickelt werden, die eine variable Anzahl von number - Argumenten entgegennimmt und deren Summe zurück gibt.

Lösungen

ES5 - Legacy Way

js
function summe1() {
  var summe = 0;
  for (var i = 0; i < arguments.length; i++) {
    summe += arguments[i];
  }
  return summe;
}
function summe1() {
  var summe = 0;
  for (var i = 0; i < arguments.length; i++) {
    summe += arguments[i];
  }
  return summe;
}

ES5 - Nerdy Way

js
function summe2() {
  var summe = 0;
  var zahlen = Array.prototype.slice.call(arguments);
  zahlen.forEach(function z() {
    summe += z;
  });
  return summe;
}
function summe2() {
  var summe = 0;
  var zahlen = Array.prototype.slice.call(arguments);
  zahlen.forEach(function z() {
    summe += z;
  });
  return summe;
}

ES5 - Functional Way

js
function summe3() {
  var zahlen = Array.prototype.slice.call(arguments);
  var summe = zahlen.reduce(function (current, next) {
    return current + next;
  }, 0);
  return summe;
}
function summe3() {
  var zahlen = Array.prototype.slice.call(arguments);
  var summe = zahlen.reduce(function (current, next) {
    return current + next;
  }, 0);
  return summe;
}

ES6 - Iterator und for-of

js
function summe4() {
  const summe = 0;
  for (const z of arguments) {
    summe += z;
  }
  return summe;
}
function summe4() {
  const summe = 0;
  for (const z of arguments) {
    summe += z;
  }
  return summe;
}

ES6 - Iterator und Array.from

js
function summe5() {
  const zahlen = Array.from(arguments);
  const summe = zahlen.reduce((current, next) => current + next, 0);
  return summe;
}
function summe5() {
  const zahlen = Array.from(arguments);
  const summe = zahlen.reduce((current, next) => current + next, 0);
  return summe;
}

ES6 - Iterator und Spread

js
function summe6() {
  const zahlen = [...arguments];
  const summe = zahlen.reduce((current, next) => current + next, 0);
  return summe;
}
function summe6() {
  const zahlen = [...arguments];
  const summe = zahlen.reduce((current, next) => current + next, 0);
  return summe;
}

ES6 - Rest Operator

js
function summe7(...zahlen) {
  const summe = zahlen.reduce((current, next) => current + next, 0);
  return summe;
}
function summe7(...zahlen) {
  const summe = zahlen.reduce((current, next) => current + next, 0);
  return summe;
}

ES6 - Einzeiler mit Fat-Arrow

js
const summe8 = (...zahlen) => zahlen.reduce((current, next) => current + next, 0);
const summe8 = (...zahlen) => zahlen.reduce((current, next) => current + next, 0);