Проверка наличия ключа в объекте JS
у меня есть следующий объект JavaScript:
var obj = {
"key1" : val,
"key2" : val,
"key3" : val
}
есть ли способ проверить, существует ли ключ в массиве, подобный этому?
testArray = jQuery.inArray("key1", obj);
не работает.
у меня есть, чтобы выполнить итерации через объект такой?
jQuery.each(obj, function(key,val)){}
6 ответов:
использовать
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'); }Примечание: Если ваш ключ будет равен null или "" ваш "если" оператор будет неправильным.
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
самый простой способ-это
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'); }
Comments