ES6中提供了更加便捷的操作JSON的方法,包括去除空的JSON數據。在原有的方法基礎上,新增了Object.entries()、Object.fromEntries()和Array.prototype.flatMap()等方法。
// 原始的JSON數據 const obj = { name: 'Jack', age: 25, company: '', address: null, skills: [] }; // 使用Object.entries()方法將JSON對象轉成數組格式 const arr = Object.entries(obj).reduce((prev, [key, value]) =>{ if (value || value === 0) { prev.push([key, value]); } return prev; }, []); // 使用Object.fromEntries()將數組轉成JSON對象 const newObj = Object.fromEntries(arr); console.log(newObj); // 輸出: { name: 'Jack', age: 25 }
上述代碼中,我們首先使用Object.entries()方法將JSON對象轉成數組格式,然后使用reduce()方法過濾掉空的屬性值(包括空字符串、null和空數組)。最后再使用Object.fromEntries()將數組轉成JSON對象。
另外,如果要處理深層嵌套的JSON對象,可以使用數組的flatMap()方法來實現,具體實現代碼如下:
const objectFilter = (obj) =>{ const entries = Object.entries(obj); const filteredEntries = entries.flatMap(([key, value]) =>{ if (value && typeof value === 'object') { return objectFilter(value).map(([k, v]) =>[`${key}.${k}`, v]); } else { return [[key, value]]; } }); return Object.fromEntries(filteredEntries); }; const obj = { name: 'Jack', age: 25, company: '', address: { city: '', street: '123' }, skills: [] }; const newObj = objectFilter(obj); console.log(newObj); // 輸出: { name: 'Jack', age: 25, 'address.street': '123' }
上述代碼中,我們定義了一個objectFilter()函數,該函數遞歸地處理嵌套的JSON對象,然后將所有的鍵值對轉成數組格式,并使用flatMap()方法實現二維數組扁平化。最后再使用Object.fromEntries()將數組轉成JSON對象。
上一篇c 中如何將轉為json
下一篇python 自動化辦公