• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JS loop-y proste zadanie do sprawdzenia.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
202 wizyt
pytanie zadane 11 grudnia 2021 w JavaScript przez castor_fiber Użytkownik (800 p.)

Witam, czy ktoś mógłby poświecić chwile i sprawdzić moje rozwiązanie zadania?

Treść zadania:

Construct a for loop that sorts the array [2, 3, 13, 18, -5, 38, -10, 11, 0, 104] into two new arrays:

  1. Define an empty evens array to hold the even numbers and an odds array for the odd numbers.
  2. In the loop, determine if each number is even or odd, then put that number into evens or odds, as appropriate.
  3. Print the arrays to confirm the results. Print evens first. Example: console.log(evens);

moj kod:

const arr = [2, 3, 13, 18, -5, 38, -10, 11, 0, 104];
let evens = [];
let odds = [];

for (let i = 0; i < arr.length; i++) {
if (arr[i]%2 == 0) {
    evens += arr[i] + "\n";
} else {
    odds += arr[i] + "\n";
}
}
console.log(evens);
console.log(odds);

dodalem /n aby log drukowal w nowych liniach.

Zaznaczam, ze jestem super swiezy w temacie wiec bede bardzo wdzieczny za porady co moglem zrobic lepiej/inaczej.

Dzieki za poświęcony czas! ;)

1 odpowiedź

+2 głosów
odpowiedź 11 grudnia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Skoro evens i odds to tablice, to dlaczego przerabiasz je na stringi w 7 i 9 linii? Powinieneś prędzej użyć metody push, żeby dodawać kolejne wartości do tablicy - wtedy też dodanie znaku \n było by zbędne.

Nie wiem za bardzo jak rozumieć fragment o sortowaniu:

Construct a for loop that sorts the array [2, 3, 13, 18, -5, 38, -10, 11, 0, 104] into two new arrays:

, bo jeśli tu faktycznie trzeba sortować tablicę, to w Twoim kodzie tego nie widzę.

Co do samego kodu, to ja bym skusił się na użycie metody reduce, która zwróci obiekt z obiema tablicami (evens i odds):

const { evens, odds } = [2, 3, 13, 18, -5, 38, -10, 11, 0, 104]
  .sort((a,b) => a - b)
  .reduce((evensAndOdds, num) => {
    if (num % 2 === 0) {
        evensAndOdds.evens.push(num);
    } else {
        evensAndOdds.odds.push(num)
    }

    return evensAndOdds;
  }, { evens: [], odds: [] });

console.log(evens); // [-10, 0, 2, 18, 38, 104]
console.log(odds); // [-5, 3, 11, 13]

 

komentarz 11 grudnia 2021 przez castor_fiber Użytkownik (800 p.)

Cześć, dzięki za odpowiedz, nie znam jeszcze funkcji wiec ich nie dodawałem, tak jak wspomniałem jestem we wczesnej fazie nauki - obecnie pętle i na napisaniu pętli która wyrzuci wartości polegało zadanie 

Zgodnie z Twoja uwaga poprawiłem kod aby dodawał wartości do zdeklarowanych stringow.

const arr = [2, 3, 13, 18, -5, 38, -10, 11, 0, 104];
let evens = [];
let odds = [];
 
for (let i = 0; i < arr.length; i++) {
if (arr[i]%2 == 0) {
    evens.push(arr[i]);
} else {
    odds.push(arr[i]);
}
}
console.log(evens);
console.log(odds);

 

komentarz 11 grudnia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Ok. Teraz zmienne evens odds mogą spokojnie być zadeklarowane jako const, ponieważ wartość przypisujesz im tylko raz. Lepiej też jest używać potrójnego zamiast podwójnego operatora porównania.

komentarz 11 grudnia 2021 przez castor_fiber Użytkownik (800 p.)

Wielkie dzieki za Twoj czas ;)

const arr = [2, 3, 13, 18, -5, 38, -10, 11, 0, 104];
const evens = [];
const odds = [];
 
for (let i = 0; i < arr.length; i++) {
if (arr[i]%2 === 0) {
    evens.push(arr[i]);
} else {
    odds.push(arr[i]);
}
}
console.log(evens);
console.log(odds);

 

komentarz 12 grudnia 2021 przez VBService Ekspert (255,840 p.)

smiley

const arr = [2, 3, 13, 18, -5, 38, -10, 11, 0, 104];
const evens = [], odds = [];
  
for (item of arr)
  if (item % 2 === 0)
    evens.push(item);
  else
    odds.push(item);

console.log(evens, odds);

 

Podobne pytania

0 głosów
2 odpowiedzi 400 wizyt
pytanie zadane 20 października 2022 w Python przez benny13 Obywatel (1,150 p.)
0 głosów
3 odpowiedzi 375 wizyt
0 głosów
1 odpowiedź 145 wizyt
pytanie zadane 23 października 2018 w C i C++ przez estewui Początkujący (270 p.)

93,104 zapytań

142,080 odpowiedzi

321,591 komentarzy

62,446 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...