Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查typescript中的特定对象是否为空_Javascript_Typescript - Fatal编程技术网

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;
}