Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memeriksa Kewujudan Utama Bersarang dengan Teguh dalam Objek JavaScript?
Apabila berurusan dengan objek JavaScript yang kompleks dengan sifat bersarang, menentukan kewujudan kunci bersarang boleh menjadi mencabar. Berikut menyediakan penerokaan mendalam tentang amalan terbaik untuk menguji kewujudan kunci objek bersarang.
Pendekatan tradisional, seperti yang ditunjukkan dalam soalan, adalah untuk menyemak setiap tahap objek bersarang secara berurutan:
if (test.level1 && test.level1.level2 && test.level1.level2.level3) { alert(test.level1.level2.level3); }
Walau bagaimanapun, pendekatan ini terdedah kepada pengecualian apabila sifat yang tidak wujud dihadapi.
Penyelesaian: Pemeriksa Kewujudan Berulang
Untuk keteguhan yang lebih baik, penyelesaian yang lebih sesuai ialah mencipta fungsi yang secara berulang menyemak kewujudan sifat bersarang tanpa mencetuskan pengecualian:
function checkNested(obj, ...args) { for (var i = 0; i < args.length; i++) { if (!obj || !obj.hasOwnProperty(args[i])) { return false; } obj = obj[args[i]]; } return true; }
Fungsi ini mengambil sebarang bilangan nama harta sebagai argumen dan mengembalikan benar jika kesemuanya wujud dalam objek bersarang. Contohnya:
var test = {level1:{level2:{level3:'level3'}} }; checkNested(test, 'level1', 'level2', 'level3'); // true checkNested(test, 'level1', 'level2', 'foo'); // false
Penyelesaian ES6
ES6 menawarkan pilihan yang lebih ringkas dan elegan untuk semakan kewujudan:
1. Fungsi Ekor-Rekursif:
function checkNested(obj, level, ...rest) { if (obj === undefined) return false if (rest.length == 0 && obj.hasOwnProperty(level)) return true return checkNested(obj[level], ...rest) }
2. Fungsi Berasaskan Kurangkan:
Untuk mendapatkan semula nilai sifat bersarang, anda boleh menggunakan fungsi satu baris ini:
function getNested(obj, ...args) { return args.reduce((obj, level) => obj && obj[level], obj) }
Contohnya:
console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa Kewujudan Utama Bersarang dengan Teguh dalam Objek JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!