JS去除对象中值为undefined和null的空键值字段

开发时遇到一个问题,需要将对象中的空字段去除,实现下图的效果。

image

解决这个问题的方式并不难,但是如何用更合适的方式解决呢。

我最推荐的转换方式是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

你可能感兴趣的:(JS去除对象中值为undefined和null的空键值字段)