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
相关产品推荐
相关产品推荐

