Ответ 1
Используйте оператор in
:
testArray = 'key1' in obj;
Sidenote: то, что вы получили там, на самом деле не объект jQuery, а просто простой объект JavaScript.
У меня есть следующий объект JavaScript:
var obj = {
"key1" : val,
"key2" : val,
"key3" : val
}
Есть ли способ проверить, существует ли ключ в массиве, подобный этому?
testArray = jQuery.inArray("key1", obj);
не работает.
Нужно ли мне выполнять итерацию через obj?
jQuery.each(obj, function(key,val)){}
Используйте оператор in
:
testArray = 'key1' in obj;
Sidenote: то, что вы получили там, на самом деле не объект jQuery, а просто простой объект JavaScript.
Это не объект jQuery, это просто объект.
Вы можете использовать метод hasOwnProperty для проверки ключа:
if (obj.hasOwnProperty("key1")) {
...
}
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");
map.has(key)
- последний ECMAScript6
способ проверки существования ключа на карте. Подробнее см. в этом.
Выше ответы хорошие. Но это хорошо и полезно.
!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