Wyciągam elementy z DOM za pomocą jQuery i chcę ustawić właściwość na obiekcie za pomocą id
elementu DOM.
Przykład
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// Here is the problem
obj.name = value
})
Jeśli itemsFromDom
zawiera element z id
„myId”, chcę obj
mieć właściwość o nazwie „myId”. Powyższe daje mi name
.
Jak nazwać właściwość obiektu za pomocą zmiennej za pomocą JavaScript?
javascript
jquery
object
syntax
Todd R.
źródło
źródło
Odpowiedzi:
Możesz użyć tej równoważnej składni:
źródło
Za pomocą ECMAScript 2015 możesz to zrobić bezpośrednio w deklaracji obiektu za pomocą notacji nawiasowej:
Gdzie
key
może być dowolne wyrażenie (np. Zmienna) zwracające wartość:źródło
obj[name]=value
kiedy mógłbym zamiast tego skorzystać z twojej sugestiiMożesz nawet utworzyć listę takich obiektów
źródło
Istnieją dwie różne notacje umożliwiające dostęp do właściwości obiektu
Notacja kropka jest szybka i łatwa, ale musi korzystać z rzeczywistą nazwę właściwości wiążące. Bez podstawienia, zmiennych itp.
Notacja w nawiasach jest otwarta. Używa ciągu, ale można go utworzyć przy użyciu dowolnego legalnego kodu js. Możesz podać ciąg znaków jako dosłowny (chociaż w tym przypadku notacja kropkowa byłaby łatwiejsza do odczytania) lub użyć zmiennej lub obliczyć w jakiś sposób.
Wszystkie te ustawiają właściwość myObj o nazwie prop1 na wartość Hello :
Pułapki:
tl; dnr : Jeśli chcesz obliczyć lub odwołać się do klucza, musisz użyć notacji nawiasowej . Jeśli używasz klucza jawnie, użyj notacji kropkowej dla prostego, czystego kodu.
Uwaga: istnieją inne dobre i poprawne odpowiedzi, ale osobiście uważam je za krótkie, wynikające z małej znajomości dziwactwa JS w locie. Może to być przydatne dla niektórych osób.
źródło
Za pomocą lodash możesz utworzyć nowy obiekt taki jak ten _.set :
Lub możesz ustawić istniejący obiekt w następujący sposób:
Powinieneś zachować ostrożność, jeśli chcesz użyć kropki („.”) Na swojej ścieżce, ponieważ lodash może ustawić hierarchię, na przykład:
źródło
Najpierw musimy zdefiniować klucz jako zmienną, a następnie musimy na przykład przypisać klucz jako obiekt
źródło
Wraz z pojawieniem się ES2015 Object.assign i obliczonych nazw właściwości kod OP sprowadza się do:
źródło
Jeśli chcesz dynamicznie dodawać pola do obiektu, najłatwiej to zrobić w następujący sposób:
Spowoduje to utworzenie obiektu danych, który będzie miał następujące pola:
źródło
Jeśli masz obiekt, możesz tworzyć tablicę kluczy, a następnie mapować i tworzyć nowy obiekt z poprzednich kluczy obiektów i wartości.
źródło
ajavascript ma dwa typy adnotacji do pobierania właściwości obiektu javascript:
Obj = {};
1) (.) Adnotacja np. Obj.id zadziała to tylko wtedy, gdy obiekt ma już właściwość o nazwie „id”
2) ([]) adnotacja np. Obj [id] tutaj, jeśli obiekt nie ma żadnej właściwości o nazwie „id”, utworzy nową właściwość o nazwie „id”.
na przykład poniżej:
Nowa właściwość zostanie utworzona zawsze, gdy napiszesz Obj [nazwa]. A jeśli właściwość już istnieje o tej samej nazwie, zastąpi ją.
źródło
Powiązane z tematem, ale nie specjalnie dla jquery. Użyłem tego w reakcjach projektów ec6, może pomaga komuś:
PS: Proszę zwrócić uwagę na cytat.
źródło
objectname.newProperty = value;
źródło
źródło