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

question-closed JavaScript Foreach tablice assocjacyjne

Object Storage Arubacloud
0 głosów
497 wizyt
pytanie zadane 11 grudnia 2020 w JavaScript przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 11 grudnia 2020 przez hiper007
Witam. Czy w JS można politerowac po tablicy assocjacyjnej za pomoca petli forEach tak zeby dostac zarowno klucz jak i wartosc :)? taki odnosnik jak w PHP foreach. Wiem ze mozna to zrobic za pomoc funkcji for.... ale czy metoda forEach tez da sie uzyskac taki sam efekt. Przy zwyklych tablicach petla forEach dziala ale mam problem zeby to ogarnac przy tablicach assocjacyjnych. Pozdrawiam Mariusz
komentarz zamknięcia: Problem rozwiązany

2 odpowiedzi

+2 głosów
odpowiedź 11 grudnia 2020 przez Comandeer Guru (601,110 p.)
wybrane 11 grudnia 2020 przez hiper007
 
Najlepsza
Nie da się, bo w JS-ie nie ma tablic asocjacyjnych.

Ale można wyciągnąć z dowolnego obiektu tablicę par klucz–wartość i po niej przeiterować → https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
komentarz 11 grudnia 2020 przez hiper007 Stary wyjadacz (11,270 p.)

No tak :) ale jak utworze tablice i zrobie petle for to normalnie mi literuje mi po tej tablicy:

let tab= [];
tab['test'] = 'Adam';
tab['test2'] = 'Ania';
for(let key in tab){
alert('key: ' + key + ' values: ' + tab[key]);
} 
1
komentarz 11 grudnia 2020 przez Comandeer Guru (601,110 p.)

Tak, bo tablica jest obiektem i dlatego można do niej dodawać nowe klucze. Tylko że tak się nie robi. Od takich rzeczy są albo zwykłe obiekty, albo Map.

let map= {};
map[ 'test' ] = 'Adam';
map[ 'test2' ] = 'Ania';

Object.entries( map ).forEach( function( [ key, value] ) {
    alert( 'key: ' + key + ' values: ' + value );
} );

 

komentarz 11 grudnia 2020 przez hiper007 Stary wyjadacz (11,270 p.)
A jak bym chcial utworzyc zwykla tablice.

let map= [];

map[map.length] = 'Adam';

map[map.length] = 'Ania';

To jest to juz poprawny zapis :)?

i jakby w takim przypadku wygladala analogicznie literowanie za pomoca petli forEach? Z gory dzieki :) jak przesiadasz sie z php to jest to nielada nowosc ze nie ma tablic asocjacyjnych :)
1
komentarz 11 grudnia 2020 przez Comandeer Guru (601,110 p.)

No jest, ale raczej się używa push:

let arr= [];
arr.push( 'Adam' );
arr.push( 'Ania' );

 

komentarz 11 grudnia 2020 przez hiper007 Stary wyjadacz (11,270 p.)

A taki forEach dla zwyklej tablicy wygladal by nastepujaco?

map.forEach( function(key, value) {
    alert( 'key: ' + key + ' values: ' + value );
} );

 

2
komentarz 11 grudnia 2020 przez Comandeer Guru (601,110 p.)

Bardziej

map.forEach( function(value, index) {
    alert( 'key: ' + index + ' values: ' + value );
} );

W tablicy nie ma bowiem pary klucz–wartość, są same wartości.

komentarz 11 grudnia 2020 przez hiper007 Stary wyjadacz (11,270 p.)
Dzieki wielkie za wytlumaczenie :) Pozdrawiam
komentarz 14 grudnia 2020 przez VBService Ekspert (253,340 p.)

Dla informacji dodam, że zapisać to można: smiley


map.forEach( (value, index) => {
    console.log(`key: ${index} values: ${value}`);
} );

Arrow function ]  [ Template literals ]

+1 głos
odpowiedź 11 grudnia 2020 przez Tomek Sochacki Ekspert (227,510 p.)
Jeśli potrzebujesz robić takie operacje to zastanowiłbym się czy nie lepiej użyć obiektu Map i ładnie sobie iterować np. pętlą for-of. Ewentualnie dla tradycyjnego obiektu użyć entries, keys, values zależnie co tam potrzebujesz.

Podobne pytania

0 głosów
3 odpowiedzi 259 wizyt
pytanie zadane 15 lutego 2016 w C i C++ przez Exus Początkujący (420 p.)
0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 15 stycznia 2019 w JavaScript przez CP733 Początkujący (390 p.)
0 głosów
1 odpowiedź 293 wizyt
pytanie zadane 24 października 2018 w JavaScript przez ajzyn Użytkownik (510 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

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

...