开发时遇到一个问题,需要将对象中的空字段去除,实现下图的效果。
解决这个问题的方式并不难,但是如何用更合适的方式解决呢。
我最推荐的转换方式是ES6的方式,既实现了功能,又做到了深拷贝:
const params = Object.keys(data)
.filter((key) => data[key] !== null && data[key] !== undefined)
.reduce((acc, key) => ({ ...acc, [key]: data[key] }), {});
当然,也有常规的方式,需要设置一个新对象用于深拷贝:
const newObj = {};
Object.keys(obj).forEach(function (k) {
if (obj[k] && typeof obj[k] === "object") {
newObj[k] = removeEmpty(obj[k]);
} else if (obj[k] !== null || obj[k] !== undefined) {
newObj[k] = obj[k];
}
});
return newObj;
还有一种通过方式JSON.parse(),但是这种方式存在坑点,无法去除对象中值为null的字段:
JSON.parse(JSON.stringify(obj));
// 返回 {a: 'duo', b: 0, d: null}
本文由duo编辑,保留原作者信息可自由转载。
文章作者: duo
个人博客:http://duo.pub