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() ჩვეულებრივ ყველაზე სწრაფი და მოკლე მეთოდებია მარტივი შემთხვევებისთვის. ყველა ტიპის თვისებისა და მემკვიდრეობით მიღებული თვისებების გათვალისწინებისთვის შეიძლება საჭირო იყოს დამატებითი შემოწმებები.