检查对象中的未定义键 - JS

时间:2018-04-28 09:58:21

标签: javascript

我有这个对象:

C

这两种方法中哪一项是正确的,以检查一个密钥是否不存在,为什么?

const obj = {
  k1: 1,
  k2: 2
};

或:

if (obj.k3 === undefined)

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以考虑使用in operator

  

如果指定的属性位于指定的对象或其原​​型链中,in运算符将返回true



const obj = {
        k1: undefined,
        k2: 2
    };

console.log('k1' in obj);                   //  true
console.log('k3' in obj);                   // false  <--- 

// value check
console.log(obj.k1 === undefined);          //  true
console.log(obj.k3 === undefined);          //  true

// typeof check
console.log(typeof obj.k1 === 'undefined'); //  true
console.log(typeof obj.k3 === 'undefined'); //  true
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用Object.hasOwnProperty检查函数,该函数将返回或返回

//since k2 exists in your object it will return true, and your if condition will //be executed
if(obj.hasOwnProperty('k2')){
  //perform your action
  //write your code
}

//since k3 does not exists in your object it will return false, and your else //condition will be executed
if(obj.hasOwnProperty('k3')){
}else{
  //perform your action 
  //write your code
}