首页 > 解决方案 > 如何测试 JavaScript 对象是否只有特定的字段/属性

问题描述

我有这个函数可以测试一个对象是否有某些字段

validateServerResponseStructure(res: any) {
    let isTypeCorrect: boolean = (
      res.result != undefined) && (res['additional-info'] != undefined
    );
    return isTypeCorrect;
  }

有没有一种方法可以测试res只有resultadditional-info属性而没有别的?

标签: javascripttypescript

解决方案


只需检查它的长度keys是否正好是两个。另外,如果要确保属性不是,最好使用严格的相等比较undefined

validateServerResponseStructure(res: any) {
  let isTypeCorrect: boolean = (
    res.result !== undefined
    && res['additional-info'] !== undefined
    && Object.keys(res).length === 2
  );
  return isTypeCorrect;
}

在不寻常的情况下,您可能具有包含该undefined值的属性,并且您希望允许此类值,请检查键的长度,并且两者resultadditional-info包含在键中:

const keys = Object.keys(res);
let isTypeCorrect: boolean = (
  ['result', 'additional-info'].every(key => keys.includes(key))
  && keys.length === 2
)

推荐阅读