/**
* 去除對象中全部符合條件的對象
* @param {Object} obj 來源對象
* @param {Function} fn 函數驗證每一個字段
*/
function compactObj (obj, fn) {
for (var i in obj) {
if (typeof obj[i] === 'object') {
compactObj(obj[i], fn)
}
if (fn(obj[i])) {
delete obj[i]
}
}
}
// 刪除空對象 刪除'', null, undefined
function isEmpty (foo) {
if (typeof foo === 'object') {
for (var i in foo) {
return true
}
return true
} else {
return foo === '' || foo === null || foo === undefined
}
}
const obj = {
a: 1,
b: '',
c: {
d: {
e: {}
}
}
}
// 調用方法
compactObj(obj, isEmpty) // {a:1}複製代碼