You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript移除JSON中含空值、null、undefined的属性?

移除JSON中空字符串、null、undefined属性的正确JavaScript实现

问题场景

现有如下JSON数据,其中多个属性值为空字符串,需要移除所有值为空字符串、null或undefined的对应属性:

const dataJSON = {
  "Cli Info:Sub_Ind": "",
  "Cli Info:Sub_Mat": "",
  "Cli Info:Sub_Ewwu": "",
  "Cli Info:Sub_kjlo": "",
  "Cli Info:Sub_uti": "",
  "S Funds:S_C_origin": "Afghanistan;Albania",
  "S We:Count_we": "Antigua & Barbuda;American Samoa;Austria",
  "Add Juri:Jurid_Coun": "Andorra;Angola"
}

尝试了以下clean函数但未生效:

function clean(obj) {
  for (var propName in obj) {
    if (obj[propName] === null || obj[propName] === undefined) {
      delete obj[propName];
    }
  }
  return obj
}

问题根源:原函数仅判断了null和undefined,未处理空字符串(''),因此值为空字符串的属性无法被移除。

修正后的实现

方法一:直接修改原对象

在判断条件中加入空字符串的检查即可:

function clean(obj) {
  for (var propName in obj) {
    // 同时匹配空字符串、null、undefined
    if (obj[propName] === null || obj[propName] === undefined || obj[propName] === '') {
      delete obj[propName];
    }
  }
  return obj;
}

// 调用示例
const cleanedData = clean(dataJSON);
console.log(cleanedData);

执行后会直接修改原对象,移除所有符合条件的属性。

方法二:生成新对象(不修改原数据,推荐)

如果需要保留原始数据,可以通过Object.entries和Object.fromEntries组合创建新对象:

function clean(obj) {
  return Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => {
      // 保留非空、非null、非undefined的属性
      return value !== null && value !== undefined && value !== '';
    })
  );
}

// 调用示例
const cleanedData = clean(dataJSON);
console.log(cleanedData);

这种方式会返回一个全新的干净对象,原对象保持不变,更适合需要保留原始数据的场景。

两种方法执行后,最终结果均为:

{
  "S Funds:S_C_origin": "Afghanistan;Albania",
  "S We:Count_we": "Antigua & Barbuda;American Samoa;Austria",
  "Add Juri:Jurid_Coun": "Andorra;Angola"
}

内容的提问来源于stack exchange,提问作者Abhijeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:27:18