Подтвердить что ты не робот

Проверка наличия ключа в объекте JS

У меня есть следующий объект JavaScript:

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

Есть ли способ проверить, существует ли ключ в массиве, подобный этому?

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

не работает.

Нужно ли мне выполнять итерацию через obj?

jQuery.each(obj, function(key,val)){}
4b9b3361

Ответ 1

Используйте оператор in:

testArray = 'key1' in obj;

Sidenote: то, что вы получили там, на самом деле не объект jQuery, а просто простой объект JavaScript.

Ответ 2

Это не объект jQuery, это просто объект.

Вы можете использовать метод hasOwnProperty для проверки ключа:

if (obj.hasOwnProperty("key1")) {
  ...
}

Ответ 3

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

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

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

Чтобы получить дочерний ключ другого ключа

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

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

Ответ 4

map.has(key) - последний ECMAScript6  способ проверки существования ключа на карте. Подробнее см. в этом.

Ответ 5

Выше ответы хорошие. Но это хорошо и полезно.

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

Это полезно для короткого стиля кода, специально для операторов if:

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');
}

Примечание. Если ваш ключ равен нулю или "ваш оператор" if" будет неправильным.

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

Итак, лучший способ проверить, существует ли ключ в obj: 'a' in obj