首頁 > web前端 > js教程 > 如何有效地從 JavaScript 物件中刪除 null 和未定義的屬性?

如何有效地從 JavaScript 物件中刪除 null 和未定義的屬性?

Linda Hamilton
發布: 2024-12-26 00:33:10
原創
717 人瀏覽過

How can I efficiently remove null and undefined attributes from JavaScript objects?

從 JavaScript 物件中刪除空白屬性

處理資料物件時,通常需要刪除未定義或設定為 null 的屬性。本文使用各種 JavaScript 版本和技術提供了此問題的解決方案。

ES10/ES2019 解

帶有 Object.fromEntries 的單行

let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
登入後複製

使用物件的函數。 fromEntries和遞歸

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解決方案

帶變異的單行

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 === Object(v) ? removeEmpty(v) : v }), {});
}
登入後複製

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 物件中刪除 null 和未定義的屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板