JavaScript オブジェクトのプロパティ削除
JavaScript オブジェクトからプロパティを削除する方法
JavaScript のオブジェクトからプロパティを削除するには、主に delete
演算子を使用します。
コード例
let person = {
name: "田中 太郎",
age: 30,
city: "東京"
};
// プロパティ "age" を削除
delete person.age;
console.log(person); // 出力: { name: "田中 太郎", city: "東京" }
説明
- 削除されたプロパティは、オブジェクトから完全に取り除かれます。
- 削除が成功すると、
true
が返されます。失敗すると、false
が返されます。 delete person.age;
の部分は、オブジェクトperson
のプロパティage
を削除しています。
注意点
let
やconst
で宣言された変数は、スコープ内で削除することはできません。- オブジェクトのプロパティが非構成可能 (non-configurable) に設定されている場合、削除することはできません。
delete
演算子は、プロパティを削除するだけで、メモリを解放するわけではありません。
代替方法 (オブジェクトスプレッド構文)
オブジェクトスプレッド構文を利用して、新しいオブジェクトを作成し、削除したいプロパティを除外することもできますが、これはプロパティを削除するのではなく、新しいオブジェクトを作成することに注意してください。
let person = {
name: "田中 太郎",
age: 30,
city: "東京"
};
let newPerson = { ...person }; // person のコピーを作成
delete newPerson.age;
console.log(newPerson); // 出力: { name: "田中 太郎", city: "東京" }
さらに詳しく
- オブジェクトスプレッド構文については、MDN ウェブドキュメントを参照してください。
delete
演算子についての詳細は、MDN ウェブドキュメントを参照してください。
JavaScript オブジェクトのプロパティ削除に関するコード例解説
delete 演算子を使ったプロパティ削除
let person = {
name: "田中 太郎",
age: 30,
city: "東京"
};
// プロパティ "age" を削除
delete person.age;
console.log(person); // 出力: { name: "田中 太郎", city: "東京" }
解説
- console.log(person);
削除後のperson
オブジェクトの内容を出力します。 - person.age
削除したいプロパティを指定します。 - delete 演算子
オブジェクトのプロパティを削除する際に使用する演算子です。 - delete person.age;
この行で、person
オブジェクトのage
プロパティを削除しています。
動作
person
オブジェクトが作成されます。delete
演算子によって、age
プロパティがperson
オブジェクトから削除されます。- 削除後の
person
オブジェクトがコンソールに出力されます。
オブジェクトスプレッド構文を使った新しいオブジェクトの作成
let person = {
name: "田中 太郎",
age: 30,
city: "東京"
};
let newPerson = { ...person }; // person のコピーを作成
delete newPerson.age;
console.log(newPerson); // 出力: { name: "元のオブジェクトを変更せずに、新しいオブジェクトを作成し、そのプロパティを削除する方法です。
**解説:**
* **`{ ...person }`:** `person` オブジェクトのすべてのプロパティをコピーして、新しいオブジェクト `newPerson` を作成します。
* **`delete newPerson.age;`:** 新しく作成された `newPerson` オブジェクトから `age` プロパティを削除します。
* **`console.log(newPerson);`:** 削除後の `newPerson` オブジェクトの内容を出力します。
**動作:**
1. `person` オブジェクトが作成されます。
2. `person` オブジェクトのコピーが `newPerson` に作成されます。
3. `newPerson` の `age` プロパティが削除されます。
4. 削除後の `newPerson` オブジェクトがコンソールに出力されます。
### どちらの方法を選ぶべきか?
* **元のオブジェクトを変更せずに新しいオブジェクトを作成したい場合:** オブジェクトスプレッド構文が適しています。
* **元のオブジェクトのプロパティを直接削除したい場合:** `delete` 演算子が適しています。
**注意:**
* `delete` 演算子で削除されたプロパティは、オブジェクトから完全に取り除かれます。
* オブジェクトのプロパティが非構成可能 (non-configurable) に設定されている場合、`delete` 演算子で削除することはできません。
* `let` や `const` で宣言された変数は、スコープ内で削除することはできません。
### まとめ
JavaScript でオブジェクトのプロパティを削除する方法は、主に `delete` 演算子とオブジェクトスプレッド構文の2つがあります。どちらの方法を選ぶかは、どのような処理を行いたいかによって異なります。
**より詳細な情報:**
* `delete` 演算子: [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/delete](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/delete)
* オブジェクトスプレッド構文: [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax](https://developer.mozilla.org/ja/docs/Web/JavaScript/Referenc e/Operators/Spread_syntax)
これらのリンクでは、より詳細な説明や他の関連情報を見つけることができます。
- 特徴
元のオブジェクトを変更せずに、新しいオブジェクトを作成し、不要なプロパティを除外することができます。
let person = {
name: '田中 太郎',
age: 30,
city: '東京'
};
// age プロパティを除外した新しいオブジェクトを作成
let newPerson = { ...person, age: undefined };
console.log(newPerson); // 出力: { name: '田中 太郎', city: '東京' }
- 解説
{...person}
の部分で、person
オブジェクトのすべてのプロパティをコピーします。, age: undefined
の部分で、age
プロパティをundefined
に設定することで、実質的に削除と同様の効果を得られます。
Object.assign() を用いた新しいオブジェクトの作成
- 特徴
オブジェクトスプレッド構文と同様に、新しいオブジェクトを作成し、プロパティをコピーできます。
let person = {
name: '田中 太郎',
age: 30,
city: '東京'
};
// age プロパティを除外した新しいオブジェクトを作成
let newPerson = Object.assign({}, person);
delete newPerson.age;
console.log(newPerson); // 出力: { name: '田中 太郎', city: '東京' }
- 解説
Object.assign()
メソッドの第一引数に空のオブジェクトを指定し、第二引数にコピー元のオブジェクトを指定することで、新しいオブジェクトを作成します。- 作成された新しいオブジェクトから、
delete
演算子を使ってage
プロパティを削除します。
filter() メソッドを用いた配列化と再構築 (プロパティ名がキーのオブジェクトの場合)
- 特徴
プロパティ名がキーのオブジェクトの場合、Object.entries()
で配列に変換し、filter()
メソッドで不要な要素をフィルタリングした後、Object.fromEntries()
で再びオブジェクトに戻すことができます。
let person = {
name: '田中 太郎',
age: 30,
city: '東京'
};
// age プロパティを除外した新しいオブジェクトを作成
let newPerson = Object.fromEntries(
Object.entries(person).filter(([key]) => key !== 'age')
);
console.log(newPerson); // 出力: { name: '田中 太郎', city: '東京' }
- 解説
Object.entries()
でperson
オブジェクトを [[key, value], ...] の形式の配列に変換します。filter()
メソッドで、キーがage
でない要素のみを抽出します。Object.fromEntries()
で、フィルタリングされた配列を再びオブジェクトに変換します。
どの方法を選ぶべきか?
- シンプルにプロパティを削除したい場合
delete
演算子が最も簡単です。 - プロパティ名がキーのオブジェクトで、特定の条件に基づいてプロパティを削除したい場合
filter()
メソッドを用いた方法が適しています。 - 元のオブジェクトを変更せずに新しいオブジェクトを作成したい場合
オブジェクトスプレッド構文かObject.assign()
が適しています。
javascript object properties