Saya hanya ingin tahu bagaimana cara memasukkan semua nilai kunci localStorage
.
Saya telah mencoba mengambil nilai-nilai dengan loop JavaScript sederhana
for (var i=1; i <= localStorage.length; i++) {
alert(localStorage.getItem(i))
}
Tapi itu hanya berfungsi jika kunci adalah angka progresif, mulai dari 1.
Bagaimana cara mendapatkan semua kunci, untuk menampilkan semua data yang tersedia?
javascript
html
key
local-storage
Simone
sumber
sumber
Jawaban:
di ES2017 Anda dapat menggunakan:
sumber
Object.keys()
pekerjaan seperti yang diharapkan juga?EDIT: jawaban ini mendapatkan banyak upvotes, jadi saya kira itu adalah pertanyaan umum. Saya merasa seperti berhutang kepada siapa pun yang mungkin tersandung pada jawaban saya dan berpikir itu "benar" hanya karena diterima untuk membuat pembaruan. Sebenarnya, contoh di atas sebenarnya bukan cara yang tepat untuk melakukan ini. Cara terbaik dan teraman adalah melakukannya seperti ini:
sumber
localStorage.length
dan tidak menggunakannya secara langsung? 2) Mengapa mendeklarasikannya di dalam for loop? 3) Mengapa++i
lebih disukai daripadai++
?++i
pasti tidak membuat loop dimulaii = 1
. Ekspresi ketiga di dalam kurung dievaluasi setelah setiap iterasi.i++
dan++i
keduanya memiliki efek yang sama persis padai
. Perbedaannya adalah bahwa++i
mengevaluasi ke baru nilaii
setelah incrementing, sedangkani++
mengevaluasi ke nilaii
sebelum incrementing. Sama sekali tidak ada perbedaan di sini, karena yang kita pedulikan hanyalah efek samping dari penambahani
, bukan nilai ekspresi.Object.keys(localStorage)
berfungsi dengan baik untuk skenario ini, selama Anda tidak perlu mendukung IE <9.localStorage.key( i )
bagian itu.Saya suka membuat objek yang mudah terlihat keluar seperti ini.
Saya melakukan hal yang sama dengan cookie juga.
sumber
sumber
Anda dapat menggunakan
localStorage.key(index)
fungsi untuk mengembalikan representasi string, di manaindex
objek ke-n yang ingin Anda ambil.sumber
Jika browser mendukung HTML5 LocalStorage, browser juga harus mengimplementasikan Array.prototype.map, mengaktifkan ini:
sumber
new Array(this.localStorage.length).fill(0)
yang terasa sedikit kurang hacky daripada menggunakan apply imo.Karena pertanyaan menyebutkan menemukan kunci, saya pikir saya akan menyebutkan bahwa untuk menunjukkan setiap pasangan kunci dan nilai, Anda bisa melakukannya seperti ini (berdasarkan jawaban Kevin):
Ini akan mencatat data dalam format "key: value"
(Kevin: jangan ragu untuk hanya mengambil info ini ke dalam jawaban Anda jika Anda mau!)
sumber
Ini akan mencetak semua kunci dan nilai pada Penyimpanan lokal:
ES6:
sumber
Anda bisa mendapatkan kunci dan nilai seperti ini:
sumber
Saya setuju dengan Kevin ia memiliki jawaban terbaik tetapi kadang-kadang ketika Anda memiliki kunci berbeda di penyimpanan lokal Anda dengan nilai yang sama misalnya Anda ingin pengguna publik Anda melihat berapa kali mereka telah menambahkan barang-barang mereka ke keranjang mereka, Anda perlu menunjukkan kepada mereka beberapa kali juga maka Anda dapat menggunakan ini:
sumber
Bagi mereka yang menyebutkan menggunakan
Object.keys(localStorage)
... jangan karena itu tidak akan bekerja di Firefox (ironisnya karena Firefox setia dengan spesifikasi). Pertimbangkan ini:Karena key, getItem dan setItem adalah metode prototypal
Object.keys(localStorage)
hanya akan kembali["key2"]
.Anda sebaiknya melakukan sesuatu seperti ini:
sumber
object.keys()
... Saya akan memperbarui jawaban saya untuk mencerminkan itu.[Exposed=Window]
. Ini menghasilkan perilaku yang saya jelaskan. Jika ditentukan dengan[Exposed=Window,OverrideBuiltins]
itu akan memberikan perilaku yang kita harapkan tetapi spec tidak menentukanOverrideBuiltins
. Anda dapat melihat diskusi tentang hal ini di whatwg / html di sini: github.com/whatwg/html/issues/183Kita juga bisa membaca namanya.
Katakanlah kita telah menyimpan nilai dengan nama 'pengguna' seperti ini
Lalu kita bisa membacanya dengan menggunakan
Saya menggunakannya dan berfungsi dengan baik, tidak perlu melakukan for loop
sumber