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

Bagaimanakah Saya Boleh Memeriksa Kewujudan Kunci Bersarang dengan Cekap dalam Objek JavaScript?

Linda Hamilton
Linda Hamiltonasal
2025-01-01 07:09:11616semak imbas

How Can I Efficiently Check for the Existence of Nested Keys in a JavaScript Object?

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!

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