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

JavaScript如何从对象数组中移除值为null或undefined的元素

空值过滤实现方案

基础场景(仅过滤顶层数组的null、undefined)

使用数组原生的filter方法即可完成需求,用item != null作为判断条件可以同时匹配null和undefined,不会误删0、false、空字符串等合法假值,适配绝大多数业务场景:

// 示例原始数据
const serverData = [
  {
    "addrSeq": "12",
    "addinfo": [
      {
        "virAddrSeq": "45"
      }
    ]
  },
  null,
  undefined
];

// 过滤逻辑
const filteredData = serverData.filter(item => item != null);

过滤后filteredData的结果为:[{addrSeq: "12", addinfo: [{virAddrSeq: "45"}]}],完全符合预期。


可选扩展场景

  • 若需要同时过滤所有假值(含空字符串、0、false、NaN),可直接简化为:
const filteredData = serverData.filter(Boolean);

注意该写法会清除所有类型的假值,仅适合不需要保留任何假值的业务场景。

  • 若需要深度清理嵌套数组中的null/undefined,可使用递归处理:
function deepCleanArray(arr) {
  return arr
    .filter(item => item != null)
    .map(item => {
      // 处理数组类型的子元素
      if (Array.isArray(item)) return deepCleanArray(item);
      // 处理对象内部的数组属性
      if (typeof item === 'object') {
        Object.entries(item).forEach(([key, val]) => {
          if (Array.isArray(val)) item[key] = deepCleanArray(val);
        })
      }
      return item;
    })
}

// 调用方式
const cleanData = deepCleanArray(serverData);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:15:03