• 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.

Object Storage Arubacloud
+1 głos
161 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 (252,740 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 244 wizyt
pytanie zadane 20 października 2022 w Python przez benny13 Obywatel (1,150 p.)
0 głosów
3 odpowiedzi 291 wizyt
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 23 października 2018 w C i C++ przez estewui Początkujący (270 p.)

92,555 zapytań

141,402 odpowiedzi

319,538 komentarzy

61,938 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...