JavaScriptのオブジェクトから指定したデータ型のプロパティを一括削除する方法
本記事では、数値・文字列・真偽値・オブジェクトなど、さまざまなデータ型のプロパティが混在するJavaScriptのオブジェクトから、指定した型のプロパティだけをまとめて削除する関数の実装方法を解説します。
やりたいこと
以下のような条件を満たす関数 shedData を作成します。
- 第1引数: 処理対象のオブジェクト
- 第2引数: 削除したいデータ型の名前(
number、string、object、boolean、symbolなど) - デフォルト動作: 第2引数が省略された場合は
'number'をデフォルトとして使用する
サンプルコード
まず、複数のデータ型を含むオブジェクトを用意します。
const obj = {
name: 'Lokesh Rahul',
age: 29,
mother: 'Avantika Rahul',
father: 'Trilok Rahul',
matches: 123,
average: 45.23,
isFit: true,
runs: {
odi: 5674,
test: 3456
}
};
const shedData = (obj, type = 'number') => {
for(const key in obj){
if(typeof obj[key] === type){
delete obj[key];
};
};
};
shedData(obj, 'string');
console.log(obj);
コードのポイント
for...inループでオブジェクトのすべてのキーを順に走査します。typeof演算子で各プロパティの値の型を判定し、第2引数で指定された型と一致した場合にのみ処理を行います。- 一致したプロパティは
delete演算子によってオブジェクトから完全に取り除かれます。 - この例では
'string'を指定しているため、name、mother、fatherの3つの文字列プロパティが削除されます。
実行結果
コンソールへの出力は次のようになります。
{
age: 29,
matches: 123,
average: 45.23,
isFit: true,
runs: { odi: 5674, test: 3456 }
}
文字列型のプロパティだけが削除され、数値・真偽値・ネストされたオブジェクトはそのまま残っていることが確認できます。
応用と注意点
- デフォルト引数:
shedData(obj)のように第2引数を渡さなければ、自動的に数値型のプロパティが削除されます。 - 浅い走査である点に注意: この実装ではネストされたオブジェクトの中身までは再帰的に処理しません。
runsオブジェクト自体はobject型として扱われます。 - より安全な走査:
for...inは継承されたプロパティも列挙するため、必要に応じてObject.hasOwn(obj, key)やobj.hasOwnProperty(key)でチェックを入れると安全です。 - 破壊的変更:
deleteは元のオブジェクトを直接変更します。元のオブジェクトを保持したい場合は、あらかじめスプレッド構文などでコピーを作成しておきましょう。
-
JavaScriptオブジェクトのプロパティとは?基本とアクセス方法をわかりやすく解説
JavaScriptオブジェクトのプロパティとは JavaScriptにおける「プロパティ」とは、オブジェクトに関連付けられた値のことです。オブジェクトは「プロパティ名(キー)と値」のペアの集まりで構成されており、ドット記法(object.property)やブラケット記法(object[property])を使ってアクセスできます。 以下は、JavaScriptでオブジェクトのプロパティを実装したコード例です。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset=
-
JavaScriptでオブジェクトのプロパティを削除する方法をわかりやすく解説
JavaScriptでオブジェクトのプロパティを削除するには、delete演算子を使用します。delete演算子は、指定したオブジェクトからプロパティそのものを取り除き、削除に成功した場合はtrueを返します。以下に、オブジェクトのプロパティを削除するサンプルコードを示します。サンプルコード<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0