Javascript 检查typescript中的特定对象是否为空
如何检查对象是否为空 例: 我试过:Javascript 检查typescript中的特定对象是否为空,javascript,typescript,Javascript,Typescript,如何检查对象是否为空 例: 我试过: if(this.brand) { console.log('is empty'); } 不工作 您可以像这样使用Object.key: class品牌{} const brand=新品牌(); if(Object.keys(brand.length==0){ console.log(“无属性”) }您还可以使用检查对象 if(_.isEmpty(this.brand)){ console.log("brand is empty") }
if(this.brand)
{
console.log('is empty');
}
不工作 您可以像这样使用
Object.key
:
class品牌{}
const brand=新品牌();
if(Object.keys(brand.length==0){
console.log(“无属性”)
}
您还可以使用检查对象
if(_.isEmpty(this.brand)){
console.log("brand is empty")
}
使用Object.keys(obj).length检查它是否为空
输出:3
来源:对象.值(this.brand).some(b=>b!=null)代码>好方法是使用一个简短的功能,您可以在应用程序中的任何地方使用:
export const isEmpty = (obj) => {
return obj === null || undefined
? true
: (() => {
for (const prop in obj) {
if (Object.prototype.hasOwnProperty.call(obj, prop)) {
return false;
}
}
return true;
})();
};
如果你建立ECMA7+可以尝试
Object.entries(obj).length==0&&obj.constructor==Object
注意Object.keys
和数组。如果您的对象甚至没有初始化并且值null
,一些
解决方案
还要注意,没有值得使用的键未定义
const objNotInitialized=null;
log(Object.keys(objNotInitialized))代码>
可以使用空属性创建贴图对象,并且大小可能不起作用。
对象可能不等于空或未定义
但是通过上面的代码,你可以发现一个对象是否真的是空的这是我所知道的最快的构造,尽管它使用了一些不循环的令人费解的循环(在我的测试中,它比
let contacts = {};
if(Object.keys(contacts).length==0){
console.log("contacts is an Empty Object");
}else{
console.log("contacts is Not an Empty Object");
}
导出函数isObjectEmpty(对象:记录):布尔值{
for(对象中的常量属性){
//如果找到任何可枚举属性,则对象不为空
返回false;
}
返回true;
}
以下是两个最流行答案之间的比较,它们的含义略有不同:
让o1={}
log(JSON.stringify(o1)=='{}')
console.log(Object.keys(o1).length==0)
//真的
//真的
设o2={p:undefined}
log(JSON.stringify(o2)=='{}')
console.log(Object.keys(o2).length==0)
//真的
//假的
设o3={l:null}
log(JSON.stringify(o3)='{}')
console.log(Object.keys(o3.length==0)
//假的
//false
是否要检查brand是否是没有属性的空对象,或者它是否未定义?可能它不起作用,因为您的条件测试this.brand是否为空:)请尝试if(!this.brand),或者执行console.log('is not empty')@adiga我想检查此对象的属性是否为空。@Unfra您可以共享您的品牌类吗?为js本机功能嵌入lodash感觉有些过分。@Mozgor lodash使代码更具可读性,这是它的主要用途。如果你愿意浪费时间,整个lodash功能可以用vanilla JS替换:)@DurkoMatko使用lodash进行深度相等(至少需要几行代码)和基本的“为空”检查之间有很大的区别。对于相同的基本函数和本机函数,嵌入lodash与在已经大量使用lodash的项目中使用isEmpty之间也存在差异。这比使用Object Approach慢得多
JSON.stringify(this.brand) === '{}'
Object.keys(myObject).length == 0
let contacts = {};
if(Object.keys(contacts).length==0){
console.log("contacts is an Empty Object");
}else{
console.log("contacts is Not an Empty Object");
}
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;
}