return nie działa

0

Cześć, jest ktoś w stanie wyjaśnić dlaczego moja funkcja nic nie zwraca?

const calculateStylePoints = (styleNotes) => {
	if(styleNotes.length == 5) {
		let sum = 0;
		for (let i = 0; i < styleNotes.length; i++) {
			sum += styleNotes[i]
		}
		let lowestValue = Math.min.apply(null, styleNotes);
		let biggestValue = Math.max.apply(null, styleNotes);
		return sum - lowestValue - biggestValue;
	}else {
		return 'Nie przekazano prawidłowej tablicy z notami od sędziów';
	}
};
calculateStylePoints([15,15.5,16,17,18])

Jeżeli zrobię console.log(sum - lowestValue - biggestValue) to działa, ale zależy mi żeby funkcja zwracała wartość a nie wyświetlała w konsoli

2

U mnie działa i zwraca: 48.5.

2

U mnie działa :D

0

To mam jakiś błąd nodemona .. Dzieki Panowie

3

Btw:
Math.min.apply(null, styleNotes) możesz uprościć do Math.min(...styleNotes), Math.max analogicznie.

0

Rzeczywiście dzięki :)

3

A tak w ogóle to imo czytelniej:

const calculateStylePoints = styleNotes => {
  // Tzw. guard - najpierw sprawdzamy czy warunki wykonania funkcji są spełnione,
  // jak nie, to przerywamy wykonanie rzucając błąd lub zwracając błąd.
  // Dzięki temu pozbywamy się niepotrzebnego if...else, spłaszcza to kod
  // i powoduje, że główny algorytm jest wyodrębniony od obsługi błedów.
  if (styleNotes.length !== 5) {
    throw new Error("Nie przekazano prawidłowej tablicy z notami od sędziów");
  }

  return [...styleNotes] // Skopiowanie tablicy by nie modyfikować oryginału (można uzyć tablicy bezpośrednio zamiast tego)
    .sort((a, b) => a - b) // Posortuj tablicę numeryczną rosnącą (tu akurat nie ma zanczenia czy rosnąco czy malejąco, byle posortować)
    .slice(1, -1) // Weź wycinek tablicy od drugiego do przedostatniego elementu
    .reduce((a, b) => a + b); // Dodaj elementy, jak ogólnie działa reduce to zajrzyj na MDN
}

;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1