如何检查对象中的所有属性是否为undefined

7

我想检查一个对象的所有属性是否都是undefined。我尝试了这个方法,但它总是返回true,因为只要其中一个属性是undefined,整个表达式就是true:

// Check if property is undefined
for (var property in filters) {
  if (Object.keys(property).indexOf(undefined)) {
     return this.restaurantsList;
  }
}

过滤器对象的外观如下所示:
{
   ishnationality: undefined
   dishtype: undefined
   organizeby: undefined
}

如何简单地检查是否所有内容都是未定义的?


一个对象的键总是一个字符串。绝对不要是 undefined - Jonas Wilms
3个回答

24
  Object.values(filters).every(el => el === undefined)

你实际上要寻找对象的值,而不是它的键。


类型ObjectConstructor上不存在值。 - Sireini
@sreinieren 使用更现代的 TypeScript 版本或者忽略这个错误。 - Jonas Wilms
3
使用 "lib": [ "es2018", "dom" ] 来获取 values 的定义。 - Titian Cernicova-Dragomir

0
function checkForUndefined(object) {
    for (var key in object) {
        if (object[key] !== undefined)
            return true;
    }
    return false;
}

这个函数怎么样?

-1

这里是一个例子,评估对象中每个属性的值:

function allUndefined(obj){
  for(var p in obj) {
    if(obj[p] !== undefined){
      return false;
    }
  }
  return true;
}

var filtersAllUndefined = {
  ishnationality: undefined,
  x: undefined
}

console.log(allUndefined(filtersAllUndefined));

var filterSomeUndefined = {
  ishnationality: undefined,
  x: 3
}
console.log(allUndefined(filterSomeUndefined));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接