javascript - Skontrolujte, či je konkrétny objekt v typescript prázdny
Ako skontrolovať, či je objekt prázdny?
napr :
private brand: Brand = new Brand();
Skúšal som:
if (this.brand) {
console.log('is empty');
}
nefunguje.
Odpoveď č. 1
Použite Object.keys(obj).length na kontrolu, či je prázdny.
Výstup : 3
Zdroj: Object.keys()
Odpoveď č. 2
Môžete použiť Object.keys takto:
class Brand { }
const brand = new Brand();
if (Object.keys(brand).length === 0) {
console.log("No properties")
}Ak chcete skontrolovať, či objekt má aspoň jedno nenulové, nedefinované vlastnosť:
- Získajte všetky hodnoty objektu do poľa pomocou
Object.values() - Skontrolujte, či má aspoň jedna hodnota pomocou
some
const hasValues =
(obj) => Object.values(obj).some(v => v !== null && typeof v !== "undefined")
class Brand { }
const brand = new Brand();
if (hasValues(brand)) {
console.log("This won't be logged")
}
brand.name = null;
if (hasValues(brand)) {
console.log("Still no")
}
brand.name = "Nike";
if (hasValues(brand)) {
console.log("This object has some non-null, non-undefined properties")
}Odpoveď č. 3
Tu je porovnanie medzi dvoma najpopulárnejšími odpoveďami, majú mierne odlišné dôsledky:
let o1 = {}
console.log(JSON.stringify(o1) === '{}')
console.log(Object.keys(o1).length === 0)
// true
// true
let o2 = { p: undefined }
console.log(JSON.stringify(o2) === '{}')
console.log(Object.keys(o2).length === 0)
// true
// false
let o3 = { l: null }
console.log(JSON.stringify(o3) === '{}')
console.log(Object.keys(o3).length === 0)
// false
// falseOdpoveď č. 4
Môžete tiež použiť lodash na kontrolu objektu
if(_.isEmpty(this.brand)){
console.log("brand is empty")
}
Odpoveď č. 5
Object.keys(myObject).length == 0
Objekt Map možno vytvoriť s prázdnymi vlastnosťami a veľkosť nemusí fungovať. Objekt nemusí byť rovný prázdnemu alebo nedefinovanému
Ale s vyššie uvedeným kódom môžete zistiť, či je objekt naozaj prázdny alebo nie.
Odpoveď č. 6
Toto je najschodnejšia konštrukcia, o ktorej viem, hoci používa trochu mätúci for...in cyklus, ktorý sa neprenáša (v mojich testoch je asi 2x rýchlejší ako Object.keys)
export function isObjectEmpty(object: Record<string, unknown>): boolean {
for (const property in object) {
// if any enumerable property is found object is not empty
return false;
}
return true;
}
