キーの存在確認
CoddyのJavaScriptジャーニー「論理とフロー」セクションの一部 — レッスン 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") は、obj が key を自身のプロパティとして持っていない場合に false を返します。しかし、obj.key === undefined であることは、必ずしも hasOwnProperty("key") が false を返すことを意味するわけではありません。obj.key が undefined になるケースには、以下の2つがあります:
- プロパティが全く存在しない場合 →
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という名前の関数を作成してください。この関数は引数としてbookオブジェクトを受け取ります。この関数は以下の処理を行う必要があります:
- もしbookが
isReadプロパティを持っており、その値がtrueである場合は、それをfalseに変更します。 - もしbookが
isReadプロパティを持っており、その値がfalseである場合は、それをtrueに変更します。 - もしbookが
isReadプロパティを持っていない場合は、そのプロパティを追加してtrueに設定します。 - 変更されたbookオブジェクトを返します。
チートシート
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()は、プロパティが存在する場合(値がundefinedであっても)はtrueを返し、プロパティが存在しない場合はfalseを返します:
const obj1 = {};
console.log(obj1.hasOwnProperty("key")); // false
const obj2 = { key: undefined };
console.log(obj2.hasOwnProperty("key")); // true自分で試してみよう
function toggleBookStatus(book) {
// ここにコードを記述してください
}
// 関数の外には何も記述しないでくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。