Muszę wypełnić plik json, teraz mam coś takiego:
{"element":{"id":10,"quantity":1}}
I muszę dodać kolejny „element”. Moim pierwszym krokiem jest umieszczenie tego jsona w typie obiektu za pomocą cart = JSON.parse
, teraz muszę dodać nowy element. Przypuszczam, że muszę użyć, cart.push
aby dodać kolejny element, próbowałem tego:
var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);
Ale mam błąd „Obiekt nie ma metody push”, gdy próbuję to zrobić element.push
, i myślę, że robię coś BARDZO źle, ponieważ nigdzie nie mówię o „elemencie”.
Jak mogę to zrobić?
Edycja: przepraszam wszystkich Miałem wiele zamieszania w głowie.
Myślałem, że mogę uzyskać tylko typ obiektu podczas pobierania danych JSON.parse
, ale w pierwszej kolejności dostaję to, co wstawiłem do JSON.
Umieszczenie tablicy zamiast obiektu rozwiązało mój problem, skorzystałem też z wielu sugestii, które tu otrzymałem, dziękuję wszystkim!
źródło
Odpowiedzi:
Twój element nie jest tablicą, jednak koszyk musi być tablicą, aby obsługiwać wiele obiektów elementów. Przykład kodu:
Jeśli chcesz, aby koszyk był tablicą obiektów w formularzu,
{ element: { id: 10, quantity: 1} }
wykonaj następujące czynności:JSON.stringify()
został wspomniany jako problem w komentarzu:źródło
Z tym rzędem
definiujesz
element
jako zwykły obiekt. Natywny obiekt JavaScript nie mapush()
metody. Aby dodać nowe elementy do zwykłego obiektu, użyj następującej składni:Z drugiej strony możesz zdefiniować
element
tablicę za pomocąNastępnie możesz dodawać elementy za pomocą
push()
.źródło
element[ yourKey ] = yourValue;
to najlepszy sposób na dodanie elementu do obiektu.element[ yourkey ] = [ element{yourkey], yourNewValue ];
Jeśli koszyk musi być przechowywany jako obiekt, a nie tablica (chociaż zalecałbym przechowywanie jako []), zawsze możesz zmienić strukturę, aby użyć identyfikatora jako klucza:
Umożliwia to dodawanie wielu elementów do koszyka, takich jak:
źródło
Aby dołączyć do obiektu, użyj
Object.assign
Wynik:
źródło
element
, więc będzie miał tylko ostatni element.powinieneś pisać
var element = [];
javascript
{}
jest pustym obiektem i[]
pustą tablicą.źródło
źródło
Czytałem coś związanego z tą próbą, jeśli jest to przydatne.
1. Zdefiniuj funkcję push wewnątrz obiektu.
Teraz możesz przesuwać elementy takie jak tablica
Spowoduje to wytworzenie tego obiektu
Zauważ, że elementy są dodawane za pomocą indeksów, a także zobacz, że do obiektu dodano nową właściwość długości. Przydaje się to również do znalezienia długości obiektu. Działa to z powodu ogólnej natury
push()
funkcjiźródło
ten kod działa.
źródło
Spróbuj tego:
źródło
Dodanie nowych elementów klucz / para do oryginalnego obiektu:
obj nowa wartość:
źródło
Jeśli ktoś chce stworzyć podobny JSON, tylko bez użycia
cart
jako tablicy, oto:Mam szereg obiektów, takich
myArr
jak:i spróbuję utworzyć JSON o następującej strukturze:
możesz po prostu zrobić
źródło
cart[key]=value
zasadzie mapa kluczowych wartości. Nie głosuj, jeśli odpowiedź była pomocna. Dzięki!Dla każdego, kto wciąż szuka rozwiązania, uważam, że obiekty powinny były być przechowywane w tablicy takiej jak ...
Jeśli chcesz użyć elementu jako obiektu, możesz to zrobić ...
Ustaw zmienną na „id_that_we_want” i podaj identyfikator elementu, który chcemy z naszej tablicy. Zwracany jest obiekt „elemnt”. Oczywiście nie musimy nam identyfikować obiektu. Do znalezienia moglibyśmy użyć innej właściwości.
źródło
LUB:
źródło
push jest metodą tablic, więc dla obiektu możesz uzyskać indeks ostatniego elementu i prawdopodobnie możesz wykonać tę samą pracę, co push dla obiektu jak poniżej
następnie dodaj obiekt do nowego indeksu elementu
źródło
jeśli nie planujesz zrobić pętli w JS, np. przejdź do PHP, aby zrobić pętlę dla ciebie
ta koncepcja może trochę pomóc
źródło
To stare pytanie, a dzisiaj najlepszą praktyką jest użycie Object.defineProperty
źródło