Maison > interface Web > js tutoriel > Comment vérifier si un objet est vide en JavaScript (exemple de code)

Comment vérifier si un objet est vide en JavaScript (exemple de code)

不言
Libérer: 2019-04-02 09:57:54
avant
2477 Les gens l'ont consulté

Le contenu de cet article explique comment vérifier si un objet est vide en JavaScript (exemple de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Il est facile de vérifier si un tableau est vide. Il suffit d'appeler directement la méthode length Alors, comment vérifier si un objet est vide❓

Le vide ici fait référence. à l'objet Pas de propriétés propres

Supposons qu'il y ait deux objets ici, l'un est obj et l'autre est un autreObj

let obj1 = {
    name: 'oli',
    child: {
        name: 'oliver'
    }
}

let obj2 = {
    [Symbol('name')]: 'alice'
}

let obj3 = Object.defineProperty({}, 'name', {
    value: 'alice',
    enumerable: false
})

let obj4 = Object.create(null)

// 我们需要一个函数,判断是否不含自有属性

isEmpty(obj1) // false
isEmpty(obj2) // false
isEmpty(obj3) // false
isEmpty(obj4) // true
Copier après la connexion
❗️J'y ai réfléchi longtemps pour vérifier si l'objet a un attribut Symbol. Vous ne pouvez utiliser que la méthode getOwnPropertySymbols, s'il existe une meilleure méthode, veuillez laisser un message

Méthode 1 : Traverse

. for-in traversal et confirmer si une certaine clé existe via la méthode hasOwnProperty. Cette méthode Il n'est pas possible de parcourir les attributs dont l'énumérable est faux

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    for (const key in object) {
        if (object.hasOwnProperty(key)) {
            return false
        }
    }
    return true
}
Copier après la connexion

Méthode 2 : méthode des clés

Utilisez les clés de la méthode statique de l'objet, puis déterminez la longueur. Ce que les clés renvoient est elle-même peut énumérer les attributs, de sorte que ceux-ci ne peuvent pas être parcourus vers des attributs dont l'énumérable est faux

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    if (Object.keys(object).length) {
        return false
    }
    return true
}
Copier après la connexion

Méthode 3 : méthode JSON

Utiliser la méthode JSON Stringify pour convertir l'objet en chaîne Par rapport à la chaîne '{}', cette méthode ne peut pas obtenir les propriétés non traversables

.
const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    return JSON.stringify(object) === '{}'
}
Copier après la connexion

Méthode 4 : méthode getOwnPropertyNames

Utiliser l'objet La méthode getOwnPropertyNames obtient tous les noms de propriétés, de sorte que même les propriétés non énumérables peuvent toujours être obtenues, ce qui est relativement correct méthode.

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    if (!!Object.getOwnPropertyNames(object).length) {
        return false
    }
    return true
}
Copier après la connexion

Comment vérifier si un objet est vide en JavaScript (exemple de code)

Version simplifiée :

const isEmptyObj = object => !Object.getOwnPropertySymbols(object).length && !Object.getOwnPropertyNames(object).length
Copier après la connexion

[Recommandations associées : Tutoriel vidéo JavaScript]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal