首页 > 解决方案 > 从空值和未定义中清除对象

问题描述

我编写了以下函数,它从对象中清除空值和未定义,但由于某种原因,它也删除了值为 0 的键。

例如:

{
  key1: 'value1',
  key2: 0
} 

该函数将删除 key2,即使它不应该。

这是功能:

const cleanJson = function cleanJson (obj) {
    if (Object.prototype.toString.call(obj) !== '[object Object]') return obj;
    return Object.keys(obj).filter(key => obj[key] && obj[key] !== 'delete').reduce((newObj, key) => {
        newObj[key] = Object.prototype.toString.call(obj[key]) !== '[object Object]' ? obj[key] : cleanJson(obj[key]);
        return newObj;
    }, {});
};

请指教。

标签: javascriptnode.js

解决方案


这是使用的一种选择Object.entries

const myJSON = {key1:'value1', key2:0, key3:null, key4:undefined, key5:""};

const myCleanJSON = Object.entries(myJSON)
  .filter(([key, value]) => (value !== null && typeof value !== 'undefined'))
  .reduce((acc, b) => ((!acc.length) ? {...acc, [b[0]]: b[1] } : { [acc[0]] : acc[1], [b[0]]: b[1] }));
  
console.log(myCleanJSON);


推荐阅读