Чаще нас поражает простейшая проблема, которую очень легко решить. Мы знаем, что решение проблемы было бы очень простым, но найти решение сложно. Он становится ошеломляющим со всеми новыми концепциями и различными вещами, доступными в Интернете. Это была одна из таких проблем для меня, когда я изначально начинал с JavaScript. Итак, сегодня я хотел бы перечислить способы проверить, существует ли свойство в объекте.
1) Использование метода Object hasOwnProperty ()
Наиболее распространенное решение - использовать hasOwnProperty()
, который является одним из распространенных методов объекта. Этот метод возвращает логическое значение, указывающее, имеет ли объект указанное свойство.
var favAuthor = { name: 'Dan Brown', favBook: 'Lost Symbol', favCharacter: 'Robert Langdon' } if(favAuthor.hasOwnProperty('favCharacter')) // true {console.log('The property exists')} else { console.log('The property does not exist') }
Если свойство не существует, оно вернет false.
console.log(favAuthor.hasOwnProperty('favVillain')) // false
2) в Операторе
Оператор in
возвращает true
, если указанное свойство находится в указанном объекте.
var favAuthor = { name: 'Dan Brown', favBook: 'Lost Symbol', favCharacter: 'Robert Langdon' } if('name' in favAuthor) // true {console.log('The property exists')} else { console.log('The property does not exist') }
Если указанное свойство не существует, выражение вернет false.
console.log('favVillain' in favAuthor) // false
3) Используя typeof и сравните его с undefined
Если свойство не существует, тип свойства должен быть ’undefined'
, и, следовательно, мы можем использовать typeof
operator и сравнивать его с ’undefined'
.
var favAuthor = { name: 'Dan Brown', favBook: 'Lost Symbol', favCharacter: 'Robert Langdon' } if(typeof favAuthor.name !== 'undefined') // true {console.log('The property exists')} else { console.log('The property does not exist') }
Если указанное свойство не существует в упомянутом объекте, оно вернет false.
console.log(typeof favAuthor.favVillain!== 'undefined') // false
4) Использование !! оператор (оператор двойного взрыва)
Это наименее известный метод проверки свойства объекта. В Javascript с каждым значением связано логическое значение true или false. Например, со значением null
связано логическое значение false
. Строковое значение, такое как abc
, имеет связанное логическое значение true
.
Вы можете найти список истинных значений здесь и ложных значений здесь.
Null - это ложное значение.
!!null // false
Таким образом, мы можем воспользоваться этим по имени свойства, которое мы хотим проверить, используя !! оператор. Если ключ к значению свойства не равен null, он вернет true.
var favAuthor = { name: 'Dan Brown', favBook: 'Lost Symbol', favCharacter: 'Robert Langdon' } if(!!favAuthor.name) // true {console.log('The property exists')} else { console.log('The property does not exist') }
Если свойство равно null, что означает, что свойство не существует, оно будет равно false, поскольку null является ложным.
console.log(!!favAuthor.favVillain) // false
И это подводит итог!
Спасибо :)