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
Lepaskan: 2025-01-01 07:09:11
asal
608 orang telah melayarinya

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;
}
Salin selepas log masuk

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
Salin selepas log masuk

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);
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan