Проверка наличия ключа
Часть раздела Логика и поток путешествия по JavaScript на Coddy — урок 16 из 65.
Чтобы проверить наличие определенного ключа в объекте JSON, используйте либо оператор in, либо метод hasOwnProperty(). Например:
const product = { "name": "Laptop", "price": 900 };
if ("price" in product) {
console.log("Key exists!");
}
if (product.hasOwnProperty("price")) {
console.log("Key exists!");
}Это удобно при проверке наличия определенных данных перед обработкой.
obj.hasOwnProperty("key") вернет false, если obj не имеет key в качестве собственного свойства. Однако obj.key === undefined не обязательно означает, что hasOwnProperty("key") вернет false. Существует два случая, когда obj.key равно undefined:
- Свойство вообще не существует →
hasOwnProperty("key")возвращаетfalse. - Свойство существует, но имеет значение
undefined→hasOwnProperty("key")возвращаетtrue.
Например:
const obj1 = {};
console.log(obj1.key); // undefined
console.log(obj1.hasOwnProperty("key"));
// false
const obj2 = { key: undefined };
console.log(obj2.key); // undefined
console.log(obj2.hasOwnProperty("key"));
// trueЗадание
ЛегкоСоздайте функцию с именем toggleBookStatus, которая принимает объект книги в качестве параметра. Функция должна:
- Если у книги есть свойство
isReadсо значениемtrue, измените его наfalse - Если у книги есть свойство
isReadсо значениемfalse, измените его наtrue - Если у книги нет свойства
isRead, добавьте его и установите значениеtrue - Верните измененный объект книги
Шпаргалка
Чтобы проверить наличие определенного ключа в объекте JSON, используйте оператор in или метод hasOwnProperty():
const product = { "name": "Laptop", "price": 900 };
// Использование оператора 'in'
if ("price" in product) {
console.log("Key exists!");
}
// Использование hasOwnProperty()
if (product.hasOwnProperty("price")) {
console.log("Key exists!");
}hasOwnProperty() возвращает true, если свойство существует (даже если его значение равно undefined), и false, если свойство отсутствует:
const obj1 = {};
console.log(obj1.hasOwnProperty("key")); // false
const obj2 = { key: undefined };
console.log(obj2.hasOwnProperty("key")); // trueПопробуйте сами
function toggleBookStatus(book) {
// Напишите свой код здесь
}
// Не пишите ничего вне функцииВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и поток
1Строки в деталях
Основы работы со строкамиИтерация по строкамШаблонные литералыМетоды строкИтоги — String Weaver4JSON Часть 2
Итерация по JSONВложенный JSONОпциональная цепочка JSONПоверхностное и глубокое копированиеПовторение — Магазин велосипедовПовторение — Солнечная система7Система управления библиотекой
Обзор проектаДобавление книг10Управление системой фестиваля
Обзор проектаДобавление фильмов и площадок2Многомерные массивы
Основы 2D массивовДоступ к элементам 2D массиваВложенные циклы и 2D массивыПовторение: 2D массивыСложение и вычитание матрицСтупенчатые массивы3D массивы и далееРаспространенные паттерны 2D массивовПовторение: всё о массивах5Множества. Часть 1
Что такое множество?Итерация по множествамДобавление элементаУдаление элементаПроверка наличия элементаРазмер и проверка на пустотуКопирование и очисткаИтоги — Основы множеств8Интересные темы о массивах
Деструктуризация массивовСинтаксис Spread в массивахРазреженные массивыИтоги — Воркшоп по массивам3JSON. Часть 1
Что такое JSON?Проверка наличия ключаМетоды объектовОператор spread. Часть 1Оператор spread. Часть 2Удаление ключейПовторение: манипуляции с ключами JSON