Czy można przeglądać właściwości obiektu JavaScript? Na przykład mam obiekt JavaScript zdefiniowany w ten sposób:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
Właściwości zostaną dynamicznie dodane do tego obiektu. Czy istnieje sposób, bym po prostu przeszukał i sprawdził, czy właściwość istnieje? Jeśli tak to jak?
javascript
lodash
user3111277
źródło
źródło
lodash
a nie to, jest uzasadnione tylko tym, że nie potrzebuje irytującegohasOwnProperty
czekuUżyj
_.forOwn()
.https://lodash.com/docs#forOwn
Zwróć uwagę, że
forOwn
sprawdzahasOwnProperty
, tak jak zwykle trzeba to zrobić, gdy przeglądasz właściwości obiektu.forIn
nie wykonuje tej kontroli.źródło
key
jest to drugi parametr, ale ma to sensJeśli chcesz „sprawdzić, czy nieruchomość istnieje”, możesz bezpośrednio skorzystać z Lo-Dash
has
.źródło
Zdecydowanie możesz to zrobić za pomocą waniliowego JS, jak pokazał stecb, ale myślę, że
each
jest to najlepsza odpowiedź na podstawowe pytanie dotyczące tego, jak to zrobić z lodash.Jak wspomniał JohnnyHK, istnieje również
has
metoda, która byłaby pomocna w przypadku użycia, ale z tego, co zostało pierwotnie stwierdzone,set
może być bardziej przydatna. Powiedzmy, że chcesz dodać coś do tego obiektu dynamicznie, jak wspomniałeś:Tak bym to zrobił, na podstawie oryginalnego opisu.
źródło
Weźmy poniższy obiekt jako przykład
Najpierw pobierz cały klucz z obj
a następnie przejrzyj ją
po prostu składając wszystko razem
źródło
W ES6 można również iterować po wartościach obiektu za pomocą
for..of
pętli. Nie działa to jednak od razu w przypadku obiektów JavaScript, ponieważ musisz zdefiniować właściwość @@ iterator w obiekcie. Działa to w następujący sposób:for..of
Pętli prosi „obiekt należy powtórzyć nad” (powiedzmy nazwać obj1 dla obiektu iteracyjnej. Na iteracje pętli ponad obj1 kolejno przez wywołanie następnego sposobu () w przewidzianym obiektu iteracyjnej i używania zwrócona wartość jako wartość dla każdej iteracji pętli.Oto przykład:
Teraz możemy użyć
for..of
pętli:źródło
Byłoby pomocne, aby zrozumieć, dlaczego musisz to zrobić z lodash. Jeśli chcesz tylko sprawdzić, czy w obiekcie istnieje klucz, nie potrzebujesz lodash.
Jeśli chcesz sprawdzić, czy istnieje wartość, możesz użyć
_.invert
źródło