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

javascript - dodawanie elementów tablicy w pętli for

Object Storage Arubacloud
0 głosów
4,333 wizyt
pytanie zadane 28 stycznia 2017 w JavaScript przez MTB Użytkownik (690 p.)
(javascript)

Cześć, moje pytanie brzmi:
jak dodać elementy tablicy np. takiej:

var tablica = [ 1, 2,3,4]

w pętli for, żeby te elementy się zsumowały w konsoli?

2 odpowiedzi

+1 głos
odpowiedź 30 stycznia 2017 przez Tomek Sochacki Ekspert (227,510 p.)

a po co chcesz ładować pętlę for do czegoś, co można zrobić gotową metodą obiektu Array?

var arr = [1,2,3,4], sum = 0;
sum = arr.reduce((a,b) => a+b);
console.log(sum);

A tak na marginesie to pętla for...in operuje nie na wartościach lecz na indeksach, a dokładniej mówiąc na nazwach właściwości (wewnętrznie tablica jest obiektem typu Array i w bardzo...bardzo dużym uogólnieniu posiada właściwości o nazwach "0": 1, "1": 2, "2": 3, "3": 4, "length": 4 + metody odziedziczone po Array.prototype). Do iteracji po wartościach jest pętla for...of ale lepiej stosować wbudowane metody JS gdyż są one wspierane natywnie w przeglądarkach.

komentarz 30 stycznia 2017 przez Comandeer Guru (601,110 p.)

Problem polega na tym, że metody z Array.prototype wciąż są wolniejsze (i to czasami sporo) od tradycyjnego for.

komentarz 30 stycznia 2017 przez Tomek Sochacki Ekspert (227,510 p.)
Przyznam szczerze, że nigdy nie porównywałem sobie szybkości działania obu rozwiązań na dużych tablicach i wychodziłem z założenia, że metody Array.prototype jako "wbudowane" w środowisko będą lepiej zoptymalizowane od pętli, ale nie ma co ukrywać, że masz znacznie większe doświadczenie w JS :) więc przyjmuję że masz rację. Z ciekawości muszę kiedyś sobie ten problem potestować :)
komentarz 30 stycznia 2017 przez Comandeer Guru (601,110 p.)

JSPerf mówi, że nawet o ponad 50% mniej wydajne. Powód jest dość prozaiczny: for w JS jest od zawsze, a forEach jest nowszym wynalazkiem.

komentarz 30 stycznia 2017 przez Comandeer Guru (601,110 p.)

Co nie znaczy, że polecam pętle wciskać wszędzie. Array.prototype.forEach jest o wiele bardziej eleganckie i jeśli wydajność nie jest kluczowa, to można z powodzeniem całkowicie pozbyć się for.

0 głosów
odpowiedź 28 stycznia 2017 przez niezalogowany
edycja 28 stycznia 2017

Żartujesz sobie prawda?

var sum = 0;
var arr = [1, 2, 3, 4];

for (var a in arr)
{
  sum += a;
}

console.log(sum);

 

2
komentarz 28 stycznia 2017 przez niezalogowany
Dlaczego wstawiasz gotowce do tak trywialnych zadań? Niech chociaż ludzie odrobinę tymi mózgami ruszą..
1
komentarz 28 stycznia 2017 przez xmentor Nałogowiec (49,520 p.)
https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Statements/for...in

Trochę niżej jest notka informująca dot. tablicy i for..in
komentarz 28 stycznia 2017 przez MTB Użytkownik (690 p.)
a da się to zrobić przy użyciu length?
1
komentarz 28 stycznia 2017 przez niezalogowany

Słuszna uwaga xmentor.

Na pierwszy rzut oka, nawet nie zauważyłem, że ten przykład nie działa. 

(btw, na mdn można się dokopać do kotwic nagłówków -> #Array_iteration_and_for...in)

 MTB - jeśli chcesz to zrobić forem - to nawet trzeba.

komentarz 28 stycznia 2017 przez niezalogowany
huh, za dużo Julii :P

Przynajmniej idea jest dobrze okazana

Podobne pytania

0 głosów
2 odpowiedzi 685 wizyt
pytanie zadane 21 sierpnia 2017 w Algorytmy przez Konfeusz Bywalec (2,810 p.)
0 głosów
1 odpowiedź 731 wizyt
pytanie zadane 18 kwietnia 2018 w PHP przez KKashi Nowicjusz (120 p.)
0 głosów
1 odpowiedź 285 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez Krutek Początkujący (330 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...