老样子直接上代码
const obj = {
name: 'zhayuechao',
age: 28,
v: null,
childen: {
name: 'ss',
age: ' ',
},
list: [
{
from: 'hefei',
code: null,
},
{
from: 'luan',
code: [
{
n: 1,
m: null,
},
],
},
],
others: ' ',
address: '',
};
fn(obj);
function fn(obj) {
const keys = Object.keys(obj);
keys.forEach(k => {
if (obj[k] == null || String(obj[k]).trim() == '') delete obj[k];
else if (typeof obj[k] == 'object') fn(obj[k]);
});
};
console.log(obj)
注释掉的for..in写法:
function fn(obj) {
for (const k in obj) {
if (obj[k] == null || String(obj[k]).trim() == '') delete obj[k];
else if(Array.prototype.isPrototypeOf(obj[k])) obj[k].forEach(sk => fn(sk));
else if(typeof obj[k] == 'object') fn(obj[k]);
}
};
利用JSON处理(和自己写递归没啥大关系了)
console.log(
JSON.parse(
JSON.stringify(
obj,
(key, value) => {
if (!value || !String(value).trim()) return undefined;
return value;
}
)
)
);
console.log(
JSON.parse(
JSON.stringify(obj),
(key, value) => {
if (value && String(value).trim()) return value;
return undefined;
}
)
);