Menguji Kewujudan Kekunci Objek JavaScript Bersarang
Apabila memeriksa objek JavaScript bersarang dalam, menyemak kehadiran kunci tertentu boleh menjadi satu cabaran. Pendekatan standard melibatkan semakan berurutan, tetapi ini boleh menyusahkan dan terdedah kepada ralat.
Penyelesaian yang lebih mantap ialah menggunakan fungsi rekursif yang menavigasi struktur objek langkah demi langkah. Contohnya:
function checkNested(obj, ...levels) { for (var i = 0; i < levels.length; i++) { if (!obj || !obj.hasOwnProperty(levels[i])) { return false; } obj = obj[levels[i]]; } return true; }
Fungsi ini mengambil objek dan bilangan aras arbitrari sebagai hujah. Ia berulang melalui tahap, menyemak sama ada setiap kunci yang sepadan wujud dan menambah penunjuk objek. Jika sebarang kunci hilang atau objek tidak ditentukan, ia mengembalikan palsu; jika tidak, ia kembali benar.
Contoh penggunaan:
const test = { level1: { level2: { level3: 'level3' } } }; checkNested(test, 'level1', 'level2', 'level3'); // true checkNested(test, 'level1', 'level2', 'foo'); // false
Sebagai alternatif, ES6 boleh dimanfaatkan untuk memudahkan fungsi 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); }
Walau bagaimanapun, untuk mendapatkan semula nilai harta bersarang dalam, fungsi satu baris boleh digunakan:
function getNested(obj, ...args) { return args.reduce((obj, level) => obj && obj[level], obj); } console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3' console.log(getNested(test, 'level1', 'level2', 'level3', 'length')); // 6 console.log(getNested(test, 'level1', 'level2', 'foo')); // undefined
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa Kewujudan Kunci Bersarang dengan Cekap dalam Objek JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!