检查 TypeScript 对象的属性是否全部为空

Kat*_*son 1 javascript arrays object typescript ecmascript-6

我有一个看起来像这样的对象:

objectProp = {
  property1: [],
  property2: [],
}
Run Code Online (Sandbox Code Playgroud)

我想检查所有属性(即字符串数组)是否为空并返回 true。我因为某种原因被卡住了。我怎样才能做到这一点?我正在使用“目标”:“es2015”

我试过这个但不起作用:

 if (!Object.keys(this.objectProp).every(array => array.length > 0)) {
      console.log('all are empety');
    }
Run Code Online (Sandbox Code Playgroud)

pal*_*aѕн 5

你需要使用Object.values(this.objectProp)而不是Object.keys(this.objectProp)为了这个工作。作为Object.keys方法返回给定对象自己的可枚举属性名称Object.values的数组,方法返回给定对象自己的可枚举属性值的数组,这实际上是您要查找的。

let objectProp = {
  property1: [],
  property2: [],
}

console.log(Object.keys(objectProp))

console.log(Object.values(objectProp))
Run Code Online (Sandbox Code Playgroud)

对于 Es2015,你可以试试这个:

let obj = {
  property1: [],
  property2: [],
}

// Log is print only when all arrays are empty
if (Object.keys(obj).map(e => obj[e]).every(a => a.length === 0)) {
  console.log('all are empty');
}
Run Code Online (Sandbox Code Playgroud)