Sobes.tech
Junior

Kā uzzināt, vai objekts ir tukšs?

sobes.tech AI

Atbilde no AI

Objekts uzskata par "tukšu", ja tam nav savas uzskaitāmas īpašības.

Pārbaudes veidi:

  • Object.keys(): Atgriež virkņu masīvu, kas attēlo objekta uzskaitāmo īpašību nosaukumus. Ja masīvs ir tukšs, objekts ir tukšs.

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Objekts ir tukšs
    }
    
  • for...in un hasOwnProperty(): Iterē pa objekta uzskaitāmajām īpašībām (ieskaitot mantošanas) un pārbauda, vai īpašība ir paša.

    const myObject = {};
    let isEmpty = true;
    for (const key in myObject) {
      if (Object.prototype.hasOwnProperty.call(myObject, key)) {
        isEmpty = false;
        break;
      }
    }
    if (isEmpty) {
      // Objekts ir tukšs
    }
    

    Object.prototype.hasOwnProperty.call() tiek izmantots drošākai pārbaudei, jo hasOwnProperty var tikt pārrakstīts objektā.

  • JSON.stringify(): Pārvērš objektu uz JSON virkni. Tukšs objekts {} tiek pārvērsts uz virkni "{}"

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Objekts ir tukšs
    }
    

    Šī metode ir piemērota vienkāršiem objektiem bez funkcijām un cikliskiem saitēm.

  • Object.getOwnPropertyNames(): Atgriež visus paša (ne mantošanas) un neuzskaitāmus un uzskaitāmus īpašību nosaukumu masīvu (ieskaitot simbolus).

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Objekts ir tukšs
    }
    
  • Object.getOwnPropertySymbols(): Atgriež visus paša simbolu īpašību masīvu. Ja objekts ir tukšs (un tam nav simbolu īpašību), šis masīvs būs tukšs.

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Objekts ir tukšs, ieskaitot simbolus
    }
    

Izvēle ir atkarīga no konteksta un veiktspējas prasībām. Object.keys() un JSON.stringify() parasti ir visātrākie un kodu saīsinātākie veidi vienkāršiem gadījumiem. Lai ņemtu vērā visas īpašību un mantošanas īpašību tipus, var būt nepieciešami papildu pārbaudes.