Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Memeriksa Kewujudan Utama Objek JavaScript Bersarang dengan Cekap?

Bagaimana untuk Memeriksa Kewujudan Utama Objek JavaScript Bersarang dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 09:17:10138semak imbas

How to Efficiently Check for Nested JavaScript Object Key Existence?

Ujian Kewujudan Kunci Objek JavaScript Bersarang

Mengenal pasti kewujudan sifat objek bersarang dalam boleh menjadi satu cabaran. Apabila cuba menggunakan tatatanda titik untuk mengakses kunci berbilang peringkat, ralat boleh berlaku jika mana-mana tahap perantaraan tidak ditentukan atau batal.

Pendekatan Sedia Ada:

Satu pendekatan biasa adalah untuk menyemak secara manual bagi setiap tahap objek bersarang menggunakan pernyataan bersyarat, memastikan setiap tahap wujud sebelum mengakses kekunci yang dikehendaki. Walau bagaimanapun, kaedah ini boleh menjadi membosankan dan terdedah kepada ralat untuk objek bersarang dalam.

Pilihan yang Lebih Baik:

Penyelesaian yang lebih mantap ialah mencipta fungsi yang menyemak secara rekursif kewujudan kunci bersarang. Fungsi mengambil objek dan satu siri nama peringkat sebagai argumen dan berulang melalui setiap peringkat, mengesahkan sama ada ia wujud dan nilainya tidak tidak ditentukan atau batal.

Pelaksanaan Fungsi:

Berikut ialah pelaksanaan fungsi langkah demi langkah:

function checkNested(obj /*, level1, level2, ... levelN*/) {
  var args = Array.prototype.slice.call(arguments, 1);

  for (var i = 0; i < args.length; i++) {
    if (!obj || !obj.hasOwnProperty(args[i])) {
      return false;
    }
    obj = obj[args[i]];
  }
  return true;
}

Fungsi ini kembali benar jika semua tahap yang dinyatakan wujud dan palsu sebaliknya.

Kemas Kini ES6:

Dalam ES6, versi yang lebih ringkas bagi fungsi ini boleh dilakukan menggunakan rekursi dan pengoptimuman panggilan ekor:

function checkNested(obj, level,  ...rest) {
  if (obj === undefined) return false
  if (rest.length == 0 && obj.hasOwnProperty(level)) return true
  return checkNested(obj[level], ...rest)
}

Contoh Penggunaan:

var test = {level1:{level2:{level3:'level3'}} };

checkNested(test, 'level1', 'level2', 'level3'); // true
checkNested(test, 'level1', 'level2', 'foo'); // false

Pendapatan Nilai (ES6):

Selain itu, untuk mendapatkan semula nilai harta bersarang, fungsi satu baris berikut boleh jadilah digunakan:

function getNested(obj, ...args) {
  return args.reduce((obj, level) => obj && obj[level], obj)
}

Contoh:

console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'

Atas ialah kandungan terperinci Bagaimana untuk Memeriksa Kewujudan Utama Objek JavaScript Bersarang dengan Cekap?. 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