オブジェクトのプロパティを削除する「delete演算子」の使い方!

JavaScriptには、オブジェクトから特定のプロパティを削除するための特別な演算子としてdelete演算子が提供されています。

この記事ではオブジェクトのプロパティを削除する『delete演算子』について、

  • delete演算子の「使い方」・「構文」・「戻り値」・「注意点」

などをプログラム例を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。

delete演算子とは

delete演算子はオブジェクトのプロパティを削除する際に使用します。以下に簡単なプログラム例を示しています。

let person = {
  name: 'Taro',
  age: 30,
};

// personオブジェクトのageプロパティを削除
delete person.age;

console.log(person); // { name: "Taro" }

上記の例では、ageプロパティがpersonオブジェクトから削除されています。

delete演算子の構文

delete演算子の構文を以下に示します。どちらの記法を使用しても構いません。

// ドット記法の場合
delete object.property;

// ブラケット記法の場合
delete object['property'];

delete演算子の戻り値

delete演算子は、操作が成功するとtrueを、失敗するとfalseを返します。ただ、重要な点として、存在しないプロパティを削除しようとしてもエラーは発生せず、trueが返されます。

let person = {
  name: 'Taro',
};

console.log(delete person.name);
// true
console.log(delete person.age);
// true(存在しないプロパティを削除しようとしてもエラーは発生せず、trueが返される)

delete演算子の戻り値は、主にプロパティの削除が実際に成功したかどうかを確認するために使用されます。

delete演算子の注意点

delete演算子はオブジェクトのプロパティを削除する際に非常に有用ですが、以下のような注意点があります。

delete演算子の注意点

  • 変数は削除できない
  • 関数は削除できない
  • 組み込みプロパティは削除できない
  • 配列から要素を削除することができるが、配列の長さは変わらない

各注意点について順番に説明します。

変数は削除できない

JavaScriptでvar, let, constを使って宣言された変数は、delete演算子で削除することができません。削除を試みても、何も起こらずfalseが返されます。

let name = 'Taro';
console.log(delete name); // false

関数は削除できない

関数は、delete演算子で削除することはできません。

function sayHello() {
  console.log('Hello');
}
console.log(delete sayHello); // false

組み込みプロパティは削除できない

JavaScriptの組み込みオブジェクト(例: Array, Date, Mathなど)のプロパティやメソッドは、delete演算子で削除することはできません。これはJavaScriptの仕様によるもので、組み込みオブジェクトの基本的な機能を保持するためです。

console.log(delete Math.PI); // false

配列から要素を削除することができるが、配列の長さは変わらない

delete演算子を使用して配列の要素を削除することができますが、削除した位置に空(empty)のスロットが作成され、配列の長さは変わりません。

let fruits = ['apple', 'banana', 'cherry'];
delete fruits[1];
console.log(fruits); // ["apple", empty, "cherry"]
console.log(fruits.length); // 3

そのため、配列から要素を削除する際には、splice()メソッドやfilter()メソッドを使用することが一般的です。

splice()メソッド

splice()メソッドを用いると、配列から要素を削除できます。splice()メソッドは元の配列を変更します。

let fruits = ['apple', 'banana', 'cherry'];
fruits.splice(1, 1);
console.log(fruits); // ["apple","cherry"]
console.log(fruits.length); // 2

filter()メソッド

filter()メソッドを用いると、条件に一致する要素だけを新しい配列として返します。filter()メソッドメソッドは元の配列に影響を与えません。

let fruits = ['apple', 'banana', 'cherry'];
let result = fruits.filter((fruit) => fruit !== 'banana');
console.log(result); // ["apple","cherry"]
console.log(result.length); // 2

本記事のまとめ

この記事ではオブジェクトのプロパティを削除する『delete演算子』について、

  • delete演算子の「使い方」・「構文」・「戻り値」・「注意点」

お読み頂きありがとうございました。