JavaScript: Jak sprawdzić czy obiekt jest pusty?
Opublikowano: 24.03.2022 - tagi: JavaScript Obiekt
Można to sprawdzić na kilka sposobów:
Sposób 1: Object.keys
const isObjectEmpty = (object) => {
return !Object.keys(object).length;
}
const emptyObject = {};
console.log('isObjectEmpty: ', isObjectEmpty(emptyObject)); // isObjectEmpty: true
Metoda keys zwraca klucze obiektu, w postaci tablicy. Jeśli tablica nie ma elementów, oznacza to, że obiekt jest pusty
Sposób 2: Object.entries
const isObjectEmpty = (object) => {
return !Object.entries(object).length;
}
const emptyObject = {};
console.log('isObjectEmpty: ', isObjectEmpty(emptyObject)); // isObjectEmpty: true
Praktycznie to samo, co poprzednio, ale wykorzystujemy tutaj metodę entries, która zwraca tablicę, której wartości są przechowywane w postaci: [klucz, wartość].
Sposób 3: Object.getOwnPropertyNames
Ostatni sposób różni się trochę od dwóch poprzednich. Metody keys i entries sprawdzają policzalne właściwości obiektu. Metoda getOwnPropertyNames zwraca zarówno policzalne i niepoliczalne właściwości obiektu.
Przykład:
const object = {
price: 100
};
object.title = 'Foo';
Object.defineProperty(object, 'color', {
value: 'red',
enumerable: false
});
console.log(Object.keys(object)); // ['price', 'title']
console.log(Object.getOwnPropertyNames(object)); // ['price', 'title', 'color']
Za pomocą metody defineProperty tworzymy właściwość niepoliczalną o nazwie color. Jak widać jest różnica między keys (ale też entries) a getOwnPropertyNames.
Poniżej przykład z użyciem: getOwnPropertyNames:
const isObjectEmpty = (object) => {
return !Object.getOwnPropertyNames(object).length;
}
const emptyObject = {};
console.log('isObjectEmpty: ', isObjectEmpty(emptyObject)); // isObjectEmpty: true
const object = {
price: 100
};
object.title = 'Foo';
Object.defineProperty(object, 'color', {
value: 'red',
enumerable: false
});
console.log('isObjectEmpty: ', isObjectEmpty(object)); // isObjectEmpty: false
Przy drugiej próbie nasza funkcja zwróci false, ponieważ wykryje niepoliczalną właściwość color.