JavaScript でオブジェクトから空白の属性を削除する
JavaScript オブジェクトを操作する場合、未定義または null の属性を削除する必要がある場合があります。 。これは、データのクリーンアップ、不要なフィールドの削除、またはオブジェクトの保管の準備に役立ちます。使用されている JavaScript のバージョンに応じて、このタスクを実行するにはいくつかの方法があります。
ES10/ES2019
ES10/ES2019 では、最も簡単なアプローチは次のとおりです。 Object.fromEntries() メソッドを使用して、空白以外のオブジェクトのみを含む新しいオブジェクトを作成します。属性:
let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
これは関数としても記述できます:
function removeEmpty(obj) { return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null)); }
ネストされたオブジェクトの場合、再帰関数を使用できます:
function removeEmpty(obj) { return Object.fromEntries( Object.entries(obj) .filter(([_, v]) => v != null) .map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v]) ); }
ES6/ES2015
ES6/ES2015 では、次のワンライナーを使用できますが、新しいオブジェクトを作成するのではなく、元のオブジェクトを変更することに注意してください:
Object.keys(obj).forEach((k) => obj[k] == null && delete obj[k]);
代わりに、次の単一の宣言は、変更せずに新しいオブジェクトを作成します。オリジナル:
let o = Object.keys(obj) .filter((k) => obj[k] != null) .reduce((a, k) => ({ ...a, [k]: obj[k] }), {});
これは次のように関数として書くことができますよく:
function removeEmpty(obj) { return Object.entries(obj) .filter(([_, v]) => v != null) .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {}); }
ネストされたオブジェクトの場合、次の再帰関数を使用できます:
function removeEmpty(obj) { return Object.entries(obj) .filter(([_, v]) => v != null) .reduce( (acc, [k, v]) => ({ ...acc, [k]: v === Object(v) ? removeEmpty(v) : v }), {} ); }
ES5/ES2009
ES5/ ES2009、コードはさらに詳しく冗長:
function removeEmpty(obj) { return Object.keys(obj) .filter(function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = obj[k]; return acc; }, {}); }
これは命令型スタイルでも書くことができます:
function removeEmpty(obj) { const newObj = {}; Object.keys(obj).forEach(function (k) { if (obj[k] && typeof obj[k] === "object") { newObj[k] = removeEmpty(obj[k]); } else if (obj[k] != null) { newObj[k] = obj[k]; } }); return newObj; }
最後に、関数型スタイルで書かれた再帰バージョン:
function removeEmpty(obj) { return Object.keys(obj) .filter(function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = typeof obj[k] === "object" ? removeEmpty(obj[k]) : obj[k]; return acc; }, {}); }
これらの手法を適用すると、さまざまなバージョンの JavaScript のオブジェクトから空の属性を効果的に削除でき、データがクリーンになり、さらなる処理や処理に備えられるようになります。ストレージ。
以上がJavaScript オブジェクトから Null 属性と未定義属性を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。