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

Optymalizacja znalezienia obiektu

Object Storage Arubacloud
0 głosów
145 wizyt
pytanie zadane 27 maja 2020 w JavaScript przez boneoflive Użytkownik (930 p.)
edycja 27 maja 2020 przez boneoflive

Cel: znaleźć jeden obiekt z wielu umieszczonych w tablicy bądź innym obiekcie

Wygląd przykładowego obiektu:

{
id:'example123',
data:'some data'
}

Stare rozwiązanie wykorzystujące do magazynowania tablice:

const Arr = [] // tablica z tysiącami obiektow jak ten w przykladzie

const x = Arr.find((el)=>{return el === 'example123'});

Testowe rozwiązanie mające zapewnić optymalizacje przy większej ilości obiektów:

const Data = {};

// w tym przypadku przykladowy obiekt nie zawiera już id w sobie.
// przykladowy obiekt jest dopisany do obiektu Data przy pomocy swojego id jako własciwość

Data['example123'] = 'przykladowy obiekt';

// dzięki czemu wpisując Data[id] można odrazu uzyskać nasz przykladowy obiekt

// id są oczywiscie unikalne, a czy istnieje można sprawdzić za pomocą typeof

Która z tych metod wyszukiwania i przechowywania jest bardziej optymalna przy magazynowaniu większej ilości obiektow? Czy druga opcja jest bezpieczna?

komentarz 27 maja 2020 przez boneoflive Użytkownik (930 p.)
//edit poprawilem kropke na równanie w ostatnim przykladzie.

1 odpowiedź

+2 głosów
odpowiedź 27 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)
 
Najlepsza

Pierwsze rozwiązanie (z użyciem wyszukiwania w tablicy) ma narzut w postaci wywoływania callbacka (parametr metody find) na każdą iterację tablicy. W tym przypadku szybsze będzie skorzystanie z drugiego rozwiązania - bezpośrednie odwołanie się do wartości przez property obiektu. Jeszcze szybsze może okazać się użycie Mapy.

Jeśli bardzo zależy Ci na wydajności, to napisz test (np. na https://jsperf.com/) pod swoją strukturę danych i porównaj wyniki tych rozwiązań.

komentarz 27 maja 2020 przez boneoflive Użytkownik (930 p.)
Dziękuje za kompletną odpowiedź i poświęcony czas.

W wolnej chwili czasu napisze test, jeśli go stworzę podziele się linkiem/ wynikiem.

Podobne pytania

+1 głos
0 odpowiedzi 134 wizyt
0 głosów
2 odpowiedzi 1,329 wizyt
pytanie zadane 15 lipca 2019 w JavaScript przez wsnofi Bywalec (2,680 p.)
0 głosów
5 odpowiedzi 769 wizyt

92,572 zapytań

141,422 odpowiedzi

319,644 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!

...