Sobes.tech
Junior

Kaip sužinoti, ar objektas yra tuščias?

sobes.tech AI

Atsakymas iš AI

Objektas laikomas "tuščiu", jei jis neturi savo išvardijamų savybių.

Patikros būdai:

  • Object.keys(): Grąžina eilutės masyvą, kuriame pateikiami objekto išvardijamų savybių pavadinimai. Jei masyvas tuščias, objektas yra tuščias.

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Objektas yra tuščias
    }
    
  • for...in ir hasOwnProperty(): Iteruoja per objekto išvardijamas savybes (įskaitant paveldėtas) ir tikrina, ar savybė yra nuosava.

    const myObject = {};
    let isEmpty = true;
    for (const key in myObject) {
      if (Object.prototype.hasOwnProperty.call(myObject, key)) {
        isEmpty = false;
        break;
      }
    }
    if (isEmpty) {
      // Objektas yra tuščias
    }
    

    Object.prototype.hasOwnProperty.call() naudojama saugesnei patikrai, nes hasOwnProperty gali būti perrašyta objekte.

  • JSON.stringify(): Konvertuoja objektą į JSON eilutę. Tuščias objektas {} konvertuojamas į eilutę "{}"

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Objektas yra tuščias
    }
    

    Šis metodas tinka paprastiems objektams be funkcijų ir ciklinių nuorodų.

  • Object.getOwnPropertyNames(): Grąžina visų nuosavų (ne paveldėtų) ir nepervardijamų bei pervardijamų savybių pavadinimų masyvą (įskaitant simbolius).

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Objektas yra tuščias
    }
    
  • Object.getOwnPropertySymbols(): Grąžina visų nuosavų simbolinių savybių masyvą. Jei objektas yra tuščias (ir neturi simbolinių savybių), šis masyvas bus tuščias.

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Objektas yra tuščias, įskaitant simbolinius
    }
    

Pasirinkimas priklauso nuo konteksto ir našumo reikalavimų. Object.keys() ir JSON.stringify() dažniausiai yra greičiausi ir trumpiausi būdai paprastiems atvejams. Norint įvertinti visų tipų savybes ir paveldėtas savybes, gali prireikti papildomų patikrinimų.