1. 程式人生 > >【JavaScript】物件結構的簡化--刪除Json中的空屬性、空陣列

【JavaScript】物件結構的簡化--刪除Json中的空屬性、空陣列

從網上抓取的Json有大片的空屬性,想直接幹掉精減一下結構。

功能描述

功能如下:

  • 屬性值為空字串、null、undefined的屬性
  • 支援遞迴刪除,即有些空屬性是由於程式碼執行中產生的,這些屬性也要刪除

效果演示

檢驗程式碼及效果如下:

1234567891011121314151617181920var object = { 'name' : 'Sodino.com', 'pEmpty' : '', 'pNull' : null, 'pUndefined' : undefined, 'pArr' : [], 'pArr1' : [ {} ], 'pObj'
: {'arr':[]}, 'pObj1' : { 'ele' : '', 'obj' : {} }};deleteEmptyProperty(object);var string = JSON.stringify(object);console.log(string);

控制檯輸出如下:

optimize.json

程式碼實現

具體實現程式碼如下:

123456789101112131415161718192021222324252627282930313233343536373839function deleteEmptyProperty(object){ for (var i in
object) { var value = object[i]; // sodino.com // console.log('typeof object[' + i + ']', (typeof value)); if (typeof value === 'object') { if (Array.isArray(value)) { if (value.length == 0) { delete object[i]; console.log('delete Array'
, i); continue; } } deleteEmptyProperty(value); if (isEmpty(value)) { console.log('isEmpty true', i, value); delete object[i]; console.log('delete a empty object'); } } else { if (value === '' || value === null || value === undefined) { delete object[i]; console.log('delete ', i); } else { console.log('check ', i, value); } } }}function isEmpty(object) { for (var name in object) { return false; } return true;}

相關推薦

JavaScript物件結構簡化--刪除Json中的屬性陣列

從網上抓取的Json有大片的空屬性,想直接幹掉精減一下結構。功能描述功能如下:屬性值為空字串、null、undefined的屬性支援遞迴刪除,即有些空屬性是由於程式碼執行中產生的,這些屬性也要刪除效果演示檢驗程式碼及效果如下:1234567891011121314151617181920var object

JavaScript怎樣在 js 中生成指定值個數的陣列,包含相同元素的陣列

在刷演算法題的過程中,往往會需要設定 n 個 0 元素的陣列,例如 var a = [0,0,0,0, ... ,0]; 少一點,固定個數,可能就自己填了,但是多了,就不那麼容易處理了。查閱相

JavaScript實現複選框的全選全部不選反選

以較為簡潔的程式實現複選框的全選、全部不選、反選 操作。 並且將可變的部分設定為JS的引數,以實現程式碼複用。 全選和全不選 第一個引數為複選框名稱,第二個引數為是全選還是全部不選。 function allCheck(name,boolValue) { var all

JavaScript深入理解call,以及與applybind的區別

一、call call有兩個妙用      1、繼承(我前面的文章有提到用call實現call繼承,有興趣可以看下。https://www.cnblogs.com/pengshengguang/p/10547624.html)      2、修

Javascript操作json 多層json物件,根據key獲取value;獲取json的所有的key

/** * 根據key找value:當key都是唯一、不會重複的時候 * @param jsonData:json資料 * @param pathArr:路徑(帶父級),如:girlfriend.

javascript數據結構-集合

一個 turn itl ole ctype rop highlight per text <!DOCTYPE html> <html> <head> <title>集合</title> <meta ch

JavaScriptBom物件和Dom物件

BOM:Browser Object Model(瀏覽器物件模型) 就是在JS程式碼中可以直接使用的物件,但是物件都是和瀏覽器有關的 Example: <script> window.close(); </script> (1)Wi

JavaScript巧妙使用sort方法將陣列內的物件進行排序

前言:在之前寫過一篇【JavaScript】陣列的sort方法排序原理詳解。  sort排序方法實現很巧妙,運用也可以很巧妙,不但可以進行陣列數字之間進行排序,還可以將陣列內的物件進行排序。 一、

Javascript求兩個物件的交集差集

//dataA,dataB樣例: [{ id: 1, name: 'zw' }] /** * 獲取兩個物件的差集 * @param dataA:大物件 * @param dataB:小物件 *

JavaScript前端用 js form上傳物件陣列

Jquery get 陣列 1. 起因:為了匯出檔案,使用 form 格式 使用 form 上傳引數,下載檔案,就會出現 obj 物件在引數裡顯示為 [object object] 或者 object

JavaScriptBOM—瀏覽器物件

1、window物件 document 獲取物件事件 //這倆種方式相同 window.document.getElementById("###"); document.getElementById("

JavaScript中列舉物件中的屬性

有時候,拿到別人的程式碼,我們並不知道某一個物件擁有哪些屬性和屬性值,這個時候別慌,我們可以通過for   in  語句來獲取物件裡的屬性和屬性值,(最底部有原始碼,可複製) 語法:for(變數名  in  物件名){     (迴

JavaScript點選的新增樣式,其他的刪除樣式

author:咔咔 wechat:fangkangfk   layui.use(['jquery',], function(args){ var $= layui.jquery; $('.type').click(function

物件JavaScript

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti

JavaScript將方法從物件中解耦

在專案中我一直做的一件事情就是把方法從其物件中解耦。 map 、 filter 以及 reduce 並非是全部,但是它們肯定是首先獲得自由的。 解耦方法可以讓方法擺脫父物件所施加的限制,同時在表示程式碼的方式上給了我們更多的自由。 那麼這到底是啥玩意呢? 為簡便起見

JavaScriptwindow物件_frames陣列物件

window物件的frames屬性是一個數組,它與window物件的parent、top等 物件屬性,都是用於對HTML的幀標籤(<frameset>或<iframe>)進行程

javascript面向物件之路讓我們一起來坦克大戰吧01

提問 不知道大家發現沒有,執行時候瀏覽器或者電腦會變得很卡哦。根據我們之前的學習,你知道是什麼原因導致的嗎? 若是各位有興趣,請你回答卡的原因,並提出優化方案。  前言 PS 各位要看效果還是使用ff或者google吧,ie7以下好像有問題。 最近大家都在坦克大戰,

JavaScript2018最新的省市區,獲取json,實現三級聯動選擇省市區(底部原始碼地址)

注意:因為getJson()方法是不能獲取本地檔案的,所以頁面必須要在本地伺服器開啟,否則會產生跨域問題。 伺服器開啟頁面 本地file模式開啟頁面 程式碼應用部分 _loadRegion(localStorage.langu

JAVASCRIPT使用ztree樹,實現右鍵增加,修改,刪除節點。帶有複選框。

測試支援火狐,谷歌,IE10等。 主要使用ztree,擁有複選框,增加,修改,刪除功能,這些是要連線後臺的,自己再修改下就可以用。 效果如下圖: 點選增加後會出現 程式碼如下: <!DOCTYPE html> <html> <head>

JavaScriptdocument物件屬性

document物件中,並沒有特別的事件,它所支援的都是通用的。 在document上講解這些屬性不具有典型性,但只要掌握了一個物件 在某個事件上的處理方式,也就自然的掌握了在其它物件上處理這個 事件。 對於document物件所支援的事件在這裡就不贅述了。 下面說一下do