Saya perlu mengisi file json, sekarang saya punya sesuatu seperti ini:
{"element":{"id":10,"quantity":1}}
Dan saya perlu menambahkan "elemen" lainnya. Langkah pertama saya adalah menempatkan json itu menggunakan tipe Object cart = JSON.parse
, sekarang saya perlu menambahkan elemen baru. Saya kira saya harus menggunakan cart.push
untuk menambahkan elemen lain, saya mencoba ini:
var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);
Tapi saya mendapat kesalahan "Objek tidak memiliki metode push" ketika saya mencoba melakukannya element.push
, dan saya pikir saya melakukan sesuatu yang SANGAT salah karena saya tidak memberi tahu "elemen" di mana saja.
Bagaimana saya bisa melakukan itu?
Sunting: maaf untuk semua yang saya miliki BANYAK kebingungan di kepala saya.
Saya pikir saya hanya bisa mendapatkan tipe objek ketika mengambil data dari JSON.parse
, tapi saya mendapatkan apa yang saya masukkan ke dalam JSON.
Puting array bukan objek memecahkan masalah saya, saya menggunakan banyak saran juga, terima kasih semua!
sumber
Jawaban:
Elemen Anda bukan array, namun keranjang Anda harus berupa array untuk mendukung banyak objek elemen. Contoh kode:
Jika Anda ingin kereta menjadi larik objek dalam formulir,
{ element: { id: 10, quantity: 1} }
lakukan:JSON.stringify()
disebutkan sebagai perhatian dalam komentar:sumber
Dengan deretan itu
Anda mendefinisikan
element
menjadi objek biasa. Objek JavaScript asli tidak memilikipush()
metode. Untuk menambahkan item baru ke objek biasa, gunakan sintaks ini:Di sisi lain Anda bisa mendefinisikan
element
sebagai array menggunakanLalu Anda bisa menambahkan elemen menggunakan
push()
.sumber
element[ yourKey ] = yourValue;
adalah cara terbaik untuk menambahkan elemen ke objek.element[ yourkey ] = [ element{yourkey], yourNewValue ];
Jika keranjang harus disimpan sebagai objek dan bukan array (Meskipun saya akan merekomendasikan menyimpan sebagai []) Anda selalu dapat mengubah struktur untuk menggunakan ID sebagai kuncinya:
Ini memungkinkan Anda untuk menambahkan banyak item ke keranjang seperti:
sumber
Untuk menambahkan ke objek gunakan
Object.assign
Keluaran:
sumber
element
, sehingga hanya akan memiliki elemen terakhir.Anda harus menulis
var element = [];
dalam javascript
{}
adalah objek kosong dan[]
array kosong.sumber
sumber
Saya sedang membaca sesuatu yang berkaitan dengan percobaan ini jika itu berguna.
1. Tetapkan fungsi push di dalam objek.
Sekarang Anda bisa mendorong elemen seperti array
Ini akan menghasilkan objek ini
Perhatikan elemen yang ditambahkan dengan indeks dan juga melihat bahwa ada properti panjang baru yang ditambahkan ke objek. Ini akan berguna untuk menemukan panjang objek juga. Ini berfungsi karena sifat
push()
fungsi yang generiksumber
kode ini berfungsi.
sumber
Coba ini:
sumber
Menambahkan elemen kunci / pasangan baru ke objek asli:
nilai baru obj:
sumber
Jika ada yang datang mencari untuk membuat JSON serupa, hanya tanpa menggunakan
cart
sebagai array, begini:Saya memiliki berbagai objek
myArr
sebagai:dan saya akan mencoba membuat JSON dengan struktur berikut:
Anda bisa melakukan-
sumber
cart[key]=value
pada dasarnya adalah peta nilai kunci. Jangan pilih-pilih jika jawabannya membantu. Terima kasih!Bagi siapa pun yang masih mencari solusi, saya pikir objek seharusnya disimpan dalam array seperti ...
Kemudian ketika Anda ingin menggunakan elemen sebagai objek Anda bisa melakukan ini ...
Letakkan variabel di "id_that_we_want" dan berikan id elemen yang kita inginkan dari array kita. Objek "elemnt" dikembalikan. Tentu saja kita tidak perlu id kita untuk menemukan objek. Kami dapat menggunakan properti lain untuk melakukan pencarian.
sumber
ATAU:
sumber
push adalah metode array, jadi untuk objek Anda bisa mendapatkan indeks elemen terakhir, dan Anda mungkin bisa melakukan pekerjaan yang sama dengan push untuk objek seperti di bawah ini
kemudian tambahkan objek ke indeks elemen baru
sumber
jika Anda tidak merancang untuk melakukan loop dengan di JS misalnya lulus ke PHP untuk melakukan loop untuk Anda
konsep ini mungkin sedikit membantu
sumber
Ini adalah pertanyaan lama, toh hari ini praktik terbaik adalah dengan menggunakan Object.defineProperty
sumber