我想要判断一个Java脚本对象,看看它的任何属性是否丢失,而不是单独判断每个属性.

我可以使用"hasownProperty"或do if/Else语句来判断它们是否都是空的/未定义的,我想要一种判断对象的更短的方法.

推荐答案

对对象值使用Array::some()(用Object.values()获取它们)(如果ANY属性值为nullundefined,则返回true):

const obj =  { a: null, b: 'there', c: 0, d: undefined };

console.log("Missing?", Object.values(obj).some(v => v === undefined || v === null));

如果您希望它尽可能快,请编写您自己的函数:

const obj =  { a: null, b: 'there', c: 0, d: undefined };

function hasNullProperties(obj){
  for(const k in obj){
    if(obj[k] === undefined || obj[k] === null){
      return true;
    }
  }
  return false;
}

console.log("Missing?", hasNullProperties(obj));

和一个基准:

enter image description here

<script benchmark data-count="10000000">

const obj =  { a: null, b: 'there', c: 0, d: undefined };

// @benchmark Array::some()

Object.values(obj).some(v => v === undefined || v === null);

// @benchmark custom func
function hasNullProperties(obj){
  for(const k in obj){
    if(obj[k] === undefined || obj[k] === null){
      return true;
    }
  }
  return false;
}

// @run
hasNullProperties(obj);

</script>
<script src="https://cdn.jsdelivr.net/gh/silentmantra/benchmark/loader.js"></script>

Javascript相关问答推荐

如何制作删除按钮以从列表中删除该项目所属的项目?

如何按预期聚合SON数据?

用相器进行向内碰撞检测

React Native平面列表自动滚动

如何在使用fast-xml-parser构建ML时包括属性值?

当在select中 Select 选项时,我必须禁用不匹配的 Select

IMDB使用 puppeteer 加载更多按钮(nodejs)

从mat—country—select获取整个Country数组

在Vite React库中添加子模块路径

如何让npx在windows中运行js脚本?

如何将Openjphjs与next.js一起使用?

编辑文本无响应.onClick(扩展脚本)

Puppeteer上每页的useProxy返回的不是函数/构造函数

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

Docent.cloneNode(TRUE)不克隆用户输入

输入的值的类型脚本array.排序()

使用createBrowserRoutVS BrowserRouter的Reaction路由

在Press Reaction本机和EXPO av上播放单个文件

JSX/React -如何在组件props 中循环遍历数组

将Windows XP转换为原始数据以在html前端中显示