检查 JS 对象中是否存在键

我有以下 JavaScript 对象:

var obj = {
"key1" : val,
"key2" : val,
"key3" : val
}

有没有一种方法可以检查数组中是否存在一个键,类似于这种方法?

testArray = jQuery.inArray("key1", obj);

不起作用。

我必须像这样遍历 obj 吗?

jQuery.each(obj, function(key,val)){}
238440 次浏览

Use the in operator:

testArray = 'key1' in obj;

Sidenote: What you got there, is actually no jQuery object, but just a plain JavaScript Object.

That's not a jQuery object, it's just an object.

You can use the hasOwnProperty method to check for a key:

if (obj.hasOwnProperty("key1")) {
...
}
var obj = {
"key1" : "k1",
"key2" : "k2",
"key3" : "k3"
};


if ("key1" in obj)
console.log("has key1 in obj");

=========================================================================

To access a child key of another key

var obj = {
"key1": "k1",
"key2": "k2",
"key3": "k3",
"key4": {
"keyF": "kf"
}
};


if ("keyF" in obj.key4)
console.log("has keyF in obj");

map.has(key) is the latest ECMAScript 2015 way of checking the existance of a key in a map. Refer to this for complete details.

Above answers are good. But this is good too and useful.

!obj['your_key']  // if 'your_key' not in obj the result --> true

It's good for short style of code special in if statements:

if (!obj['your_key']){
// if 'your_key' not exist in obj
console.log('key not in obj');
} else {
// if 'your_key' exist in obj
console.log('key exist in obj');
}

Note: If your key be equal to null or "" your "if" statement will be wrong.

obj = {'a': '', 'b': null, 'd': 'value'}
!obj['a']    // result ---> true
!obj['b']    // result ---> true
!obj['c']    // result ---> true
!obj['d']    // result ---> false

So, best way for checking if a key exists in a obj is:'a' in obj

the simplest way is

const obj = {
a: 'value of a',
b: 'value of b',
c: 'value of c'
};


if(obj.a){
console.log(obj.a);
}else{
console.log('obj.a does not exist');
}

You can try this:

const data = {
name : "Test",
value: 12
}


if("name" in data){
//Found
}
else {
//Not found
}

This works for me like a charm. I'm inside a foreach function this didn't work obj.hasOwnProperty("key1") also this "key1" in obj

let $schedule = {lesson:'asd',age:'sad'}
    

$schedules.forEach(function(e) {
if (e['lesson']) {
$title = e.lesson.lesson_name;
} else {
$title = 'No lesson Attached';
}
});

use the hasOwnProperty(),

if (!obj.hasOwnProperty(key)) {


}

For Example :

const object1 = {
one : 'value of one',
two : 'value of two',
three : 'value of three',
};


console.log(object1.hasOwnProperty('one'));
// expected output: true


console.log(object1.hasOwnProperty('value of one'));
// expected output: false


console.log(object1.hasOwnProperty('four'));
// expected output: false