Dalam JavaScript, adalah perkara biasa untuk menambah ahli pada objek secara dinamik. Walau bagaimanapun, apabila penambahan ini perlu bersyarat, pendekatan yang paling mudah selalunya membawa kepada ahli yang tidak ditentukan.
Dalam percubaan untuk mencipta kod idiomatik:
a = { b: (someCondition? 5 : undefined) };
ahli b ditambahkan pada objek tanpa mengira hasil someCondition, menyebabkan nilainya tidak ditentukan jika syarat itu palsu.
Untuk menyelesaikannya, lebih banyak penyelesaian ringkas boleh digunakan menggunakan operator hamparan (...) dan penilaian logik DAN litar pintas (&&):
const a = { ...(someCondition && {b: 5}) }
Kod ini menghapuskan keperluan untuk operator bersyarat. Operator hamparan mengembangkan pendakap kerinting ke dalam objek, menambah ahli b jika someCondition adalah benar. Penilaian logik DAN litar pintas memastikan bahawa pendakap kerinting hanya dinilai jika beberapa Syarat adalah benar, menghalang penambahan ahli yang tidak ditentukan.
Pendekatan ini boleh diperluaskan dengan mudah untuk mengendalikan berbilang ahli bersyarat:
const a = { ...(conditionB && {b: 5}), ...(conditionC && {c: 5}), ...(conditionD && {d: 5}), ...(conditionE && {e: 5}), ...(conditionF && {f: 5}), ...(conditionG && {g: 5}), }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Ahli Objek Secara Bersyarat dalam JavaScript Tanpa Sifat Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!