Aktywne Wpisy
![Jody_HiGHROLLER](https://wykop.pl/cdn/c0834752/8ad112d7d1f644f7405e4167cec0fd075be2d3e01f16462fbfb72ab7da7c36d5,q60.jpg)
Jody_HiGHROLLER +24
#tinder ale beka laska mnie zaprosiła na chatę po paru godzinach na miescie i nawet się nie dała pocałować (ja #!$%@?). Leze z nią teraz w jednym leżu, ta śpi (niby) ale ma za cel chyba się nie dać wydymać. Dziwne dupy, chociaż się przytuli chłop ja #!$%@?.
![szczurek_87](https://wykop.pl/cdn/c3397992/szczurek_87_nuRK97PsTL,q60.jpg)
szczurek_87 +42
Fachowiec odkurzył płytę indukcyjną w montowanej kuchni swoim odkurzaczem karcher zajechaną plastikową końcówką która ma mnóstwo zadziorów i jakiś wbitych kamyków. Efekt to porysowana nowiusieńka płyta indukcyjna. Wkurzyłem się bo mam już dosyć tych speców. Jedno robią a drugie obok niszczą. Zero zabezpieczenia rzeczy, żadnego myślenia tylko jazda, byle szybko kasę wziąć i nara. W odkurzacz ma włożoną taką końcówkę z włosami - 3s na zmianę by stracił. To kur*a nie :/
const usersAge = [20, 21, 22, 23];
usersAge.forEach((age) => {
console.log(
W przyszłym roku użytkownik będzie miał ${age + 1} lat
);age++; // NIE ZADZIAŁA i nie zwiększy na stałe każdej wartości z tablicy usersAge o 1
})
to próba zwiększenia każdego elementu tablicy usersAge poprzez inkrementację zmiennej age nie zadziała.
Tyle że teraz wyczytałem na stackoverflow, że można w metodzie forEach użyć drugiego argumentu do uzyskania indeksu elementu pobranego z tablicy. Można wtedy powyższy kod zmodyfikować w następujący sposób:
const usersAge = [20, 21, 22, 23];
usersAge.forEach((age, index) => {
console.log(
W przyszłym roku użytkownik będzie miał ${age + 1} lat
);usersAge[index]++; // ZADZIAŁA i zmodyfikuje tablicę usersAge
})
I teraz się zastanawiam, czy jest coś nie tak w drugim fragmencie kodu? W sensie wiem, że to teraz zadziałało, ale nie jestem pewny, czy jest to dobry sposób? I zastanawiam się też nad tym w kontekście używania funkcji strzałkowych, bo gdybym w drugim przykładzie chciał, żeby ta funkcja była uniwersalna i zamiast usersAge[index] napisał this[index], to wtedy to nie zadziała, bo funkcje strzałkowe nie mają wiązania this, więc w takim przypadku to nie zadziała. Czyli w takim przypadku musiałbym użyć tutaj zwykłej funkcji?
Czyli w sumie to są moje dwa pytania:
1. Czy ten sposób na modyfikacje tablicy jest ok, czy można to zrobić lepiej?
2. Jeżeli użyłbym this[index] w drugim fragmencie zamiast usersAge[index] to nie zadziała, bo mamy funkcję strzałkową. Czyli w takim wypadku powinienem tutaj użyć zwykłej funkcji?
I jeszcze jedno, wiem, że do modyfikacji tej tablicy można spokojnie użyć zwykłej pętli for lub while, ale akurat pytam tutaj o użycie metody forEach.
#javascript #webdev #naukaprogramowania
return numer + 1 } i potem użyć age => console.log(add(age)) tylko że for each nie zwraca niczego więc nie zmieni oryginalnej tablicy
map()
i przypisanie efektu do starej zmiennej z tablicą. (Ale trzeba byłoby sprawdzić.)Ad. 2. Generalnie jak możesz to unikaj
this
, chociaż jest to opinia. Nie ma sensu zaciemniać sobie kodu.@maciorqa: Nie, to jest zła praktyka. Zmieniasz coś, po czym jednocześnie iterujesz - brzmi jak przepis na kłopoty, prawda? Wszystko, co możliwe, powinno być niemutowalne. Unikniesz w ten sposób wielu problemów. Pętla też nie jest dobrym rozwiązaniem, bo jest mało czytelna. Pętla
No ale przecież ja w moim przykładzie zmieniłem tę wartość dopiero na koniec pętli, więc ta wartość została już zmieniona i pętla przechodzi do następnego elementu w tablicy. Więc jakie mogą z tego wyniknąć problemy?
Drugie pytanie - wiem, że można też tutaj użyć map, ale
@maciorqa: Ale nie zawsze tak będzie, może kiedyś, z jakichś dziwnych powodów, zmieniałbyś inny element. Albo byś się pomylił i zmienił nie pod tym indeksem, pod którym chciałeś. Już sam fakt, że po przejściu forEach coś