色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

es6 json去除空

洪振霞1年前8瀏覽0評論

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對象。