首页 > 解决方案 > 仅当对象的所有值都不为空时才返回对象

问题描述

假设我有一个对象,其中每个字段的值都是通过单独的调用检索的:

let ExampleObj = {
  foo: getFoo(),
  bar: getBar(),
  baz: getBaz(),
  ...
} 

我有一个函数,当且仅当所有字段都评估为非空时才会返回对象:

let returnsExampleObj = () => {
  // if (!!ExampleObj.foo && !!ExampleObj.bar && !!ExampleObj.baz) {
  //   return ExampleObj
  // } else {
  //   return undefined
  // }
}

我显然可以手动检查每个字段以查看它是否像上面的示例中那样为空,但是有没有更优雅的方法呢?该对象中可能有几十个字段,手动检查每个字段将非常繁琐。

标签: javascript

解决方案


只需检查这些.every值是否真实:

const returnsExampleObj = () => {
  return Object.values(ExampleObj).every(Boolean) ? ExampleObj : undefined;
};

推荐阅读