Apakah mungkin untuk mengulang properti dalam objek JavaScript? Misalnya, saya memiliki objek JavaScript yang didefinisikan sebagai ini:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
Properti akan ditambahkan secara dinamis ke objek ini. Apakah ada cara bagi saya untuk mengulang dan memeriksa apakah ada properti? Jika ya, bagaimana caranya?
javascript
lodash
pengguna3111277
sumber
sumber
lodash
dan tidak ini dibenarkan hanya dengan tidak memerlukanhasOwnProperty
pemeriksaan yang menggangguGunakan
_.forOwn()
.https://lodash.com/docs#forOwn
Perhatikan bahwa
forOwn
pemeriksaanhasOwnProperty
, seperti yang biasanya perlu Anda lakukan saat melakukan perulangan pada properti objek.forIn
tidak melakukan pemeriksaan ini.sumber
key
ini adalah parameter kedua, tetapi masuk akalUntuk keinginan Anda untuk "memeriksa apakah ada properti", Anda dapat langsung menggunakan Lo-Dash
has
.sumber
Anda pasti bisa melakukan ini dengan vanilla JS seperti yang ditunjukkan STECB, tapi menurut saya
each
ini adalah jawaban terbaik untuk pertanyaan inti tentang bagaimana melakukannya dengan lodash.Seperti yang disebutkan JohnnyHK, ada juga
has
metode yang akan membantu kasus penggunaan, tetapi dari apa yang dinyatakan semulaset
mungkin lebih berguna. Katakanlah Anda ingin menambahkan sesuatu ke objek ini secara dinamis seperti yang Anda sebutkan:Begitulah cara saya melakukannya, berdasarkan deskripsi asli.
sumber
Mari kita ambil objek di bawah ini sebagai contoh
Pertama, ambil semua kunci di obj
dan kemudian mengulanginya
hanya menyatukan semuanya
sumber
Di ES6, dimungkinkan juga untuk mengulangi nilai suatu objek menggunakan
for..of
loop. Namun, ini tidak langsung berfungsi untuk objek JavaScript, karena Anda harus mendefinisikan properti @@ iterator pada objek tersebut. Ini bekerja sebagai berikut:for..of
Loop meminta "objek yang akan iterasi berakhir" (sebut saja obj1 untuk objek iterator. Loop iterates atas obj1 oleh berturut-turut memanggil metode berikutnya () pada objek iterator yang disediakan dan menggunakan nilai yang dikembalikan sebagai nilai untuk setiap iterasi dari lingkaran.Berikut ini contohnya:
Sekarang kita bisa menggunakan
for..of
loop:sumber
Akan sangat membantu untuk memahami mengapa Anda perlu melakukan ini dengan lodash. Jika Anda hanya ingin memeriksa apakah ada kunci di suatu objek, Anda tidak perlu lodash.
Jika Anda ingin melihat apakah ada nilai, Anda dapat menggunakan
_.invert
sumber