Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memeriksa Kewujudan Utama Bersarang dengan Teguh dalam Objek JavaScript?

Bagaimanakah Saya Boleh Memeriksa Kewujudan Utama Bersarang dengan Teguh dalam Objek JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 17:43:09311semak imbas

How Can I Robustly Check for Nested Key Existence in JavaScript Objects?

Ujian untuk Kewujudan Kunci Objek JavaScript Bersarang

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 &amp;&amp; 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 &amp;&amp; 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn