首頁 > web前端 > js教程 > 如何從 JavaScript 物件中刪除 Null 或未定義的屬性?

如何從 JavaScript 物件中刪除 Null 或未定義的屬性?

Patricia Arquette
發布: 2024-11-28 04:31:13
原創
335 人瀏覽過

How Can I Remove Null or Undefined Attributes from a JavaScript Object?

從JavaScript 中的物件中刪除空白屬性

在JavaScript 中,物件可以具有未定義或null 的屬性,這可能會使程式碼變得混亂並使工作變得更加困難。為了解決這個問題,我們可以使用各種技術從物件中刪除這些空白屬性。

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

  • 變異單行:Object.keys(obj).forEach((k) => obj [k] = = null && 刪除obj[k]);
  • A非變異版本: 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

  • 函數式非遞歸版本: function removeEmpty(obj) { return Object.keys(obj) .filter function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = obj[k]; 回傳acc; }
  • 遞歸函數版本: 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]; ACC; }, {}); }

以上是如何從 JavaScript 物件中刪除 Null 或未定義的屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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