我最推荐的转换方式是ES6的方式,既实现了功能,又做到了深拷贝:我最推荐的转换方式是ES6的方式,既实现了功能,又做到了深拷贝:我最推荐的转换方式是ES6的方式,既实现了功能,又做到了深拷贝:我最推荐的转换方式是ES6的方式,既实现了功能,又做到了深拷贝:我最推荐的转换方式是ES6的方式,既实现了功能,又做到了深拷贝:
开发时遇到一个问题,需要将对象中的空字段去除,实现下图的效果。
先看效果图:
倒腾了好久,终于倒腾出来了.呜呜呜呜
先说明,我用的是Vue-Cli 2.0
解决这个问题的方式并不难,但是如何用更合适的方式解决呢。
我最推荐的转换方式是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}
作者:duopub
链接:https://www.jianshu.com/p/4d76644b0e42
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。