Sobes.tech
Junior

Ինչպե՞ս իմանալ, որ օբյեկտը դատարկ է։

sobes.tech AI

Պատասխան AI-ից

Օբյեկտը համարվում է «դատարկ», եթե նրա սեփական ցուցակագրված հատկությունները չկան:

Կան տարբեր մեթոդներ՝ ստուգելու համար՝

  • Object.keys(): Վերադարձնում է տողերի զանգված, որը ներկայացնում է օբյեկտի ցուցակագրված հատկությունների անունները: Եթե զանգվածը դատարկ է, ապա օբյեկտը դատարկ է:

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Օբյեկտը դատարկ է
    }
    
  • for...in և hasOwnProperty(): Իտերատիվ անցնում է օբյեկտի ցուցակագրված հատկությունների վրա (ներառյալ ժառանգածները) և ստուգում՝ արդյոք հատկությունը սեփական է:

    const myObject = {};
    let isEmpty = true;
    for (const key in myObject) {
      if (Object.prototype.hasOwnProperty.call(myObject, key)) {
        isEmpty = false;
        break;
      }
    }
    if (isEmpty) {
      // Օբյեկտը դատարկ է
    }
    

    Object.prototype.hasOwnProperty.call() օգտագործվում է ավելի անվտանգ ստուգման համար, քանի որ hasOwnProperty կարող է վերաշարադրվել օբյեկտում:

  • JSON.stringify(): Փոխակերպում է օբյեկտը JSON տողին: Դատարկ օբյեկտ {}-ը փոխարկվում է "{}" տողին:

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Օբյեկտը դատարկ է
    }
    

    Այս մեթոդը հարմար է պարզ օբյեկտների համար, առանց ֆունկցիաների և ցիկլիկ հղումների:

  • Object.getOwnPropertyNames(): Վերադարձնում է բոլոր սեփական (ոչ ժառանգած) անհամարելի և ցուցակագրված հատկությունների անունների զանգվածը (ներառյալ սիմվոլները):

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Օբյեկտը դատարկ է
    }
    
  • Object.getOwnPropertySymbols(): Վերադարձնում է օբյեկտի բոլոր սեփական սիմվոլային հատկությունների զանգվածը: Եթե օբյեկտը դատարկ է (և չունի սիմվոլային հատկություններ), այս զանգվածը կլինի դատարկ:

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Օբյեկտը դատարկ է, ներառյալ սիմվոլային հատկությունները
    }
    

Ընտրությունը կախված է կոնտեքստից և պահանջներից՝ կատարողականից: Object.keys() և JSON.stringify() սովորաբար ամենահեշտ և արագ մեթոդներն են՝ պարզ դեպքերի համար: Բոլոր տեսակի հատկությունների և ժառանգած հատկությունների համար կարող են անհրաժեշտ լինել լրացուցիչ ստուգումներ։