我有这个对象:
C
这两种方法中哪一项是正确的,以检查一个密钥是否不存在,为什么?
const obj = {
k1: 1,
k2: 2
};
或:
if (obj.k3 === undefined)
有更好的方法吗?
答案 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;
答案 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
}