• 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

VPS Starter Arubacloud
0 głosów
4,288 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 (599,730 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 (599,730 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 (599,730 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 679 wizyt
pytanie zadane 21 sierpnia 2017 w Algorytmy przez Konfeusz Bywalec (2,810 p.)
0 głosów
1 odpowiedź 708 wizyt
pytanie zadane 18 kwietnia 2018 w PHP przez KKashi Nowicjusz (120 p.)
0 głosów
1 odpowiedź 266 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez Krutek Początkujący (330 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...