ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript オブジェクトから Null 属性と未定義属性を削除するにはどうすればよいですか?

JavaScript オブジェクトから Null 属性と未定義属性を削除するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-27 11:39:11
オリジナル
963 人が閲覧しました

How to Remove Null and Undefined Attributes from a JavaScript Object?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート