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

如何删除嵌套对象数组中value为null或空字符串的节点并保留子节点

你可以用递归遍历树结构的方式实现该需求,核心逻辑是自底向上处理每个节点,判断节点value有效性后决定是否保留节点、或是将其子节点提升至父层级,具体实现代码如下:

function filterEmptyValueNodes(nodes) {
  const result = [];
  for (const node of nodes) {
    // 优先递归处理当前节点的所有子节点
    const processedChildren = node.children ? filterEmptyValueNodes(node.children) : [];
    // 判断当前节点value是否合法
    if (node.value !== null && node.value !== '') {
      // 合法则保留节点,替换为处理后的子节点
      const newNode = {...node};
      // 子节点为空时可按需选择保留空数组或删除children字段,以下为删除空children的逻辑
      if (processedChildren.length) {
        newNode.children = processedChildren;
      } else {
        delete newNode.children;
      }
      result.push(newNode);
    } else {
      // 不合法则直接将子节点提升至当前层级,跳过当前节点
      result.push(...processedChildren);
    }
  }
  return result;
}

// 调用示例:传入原始数据即可得到处理后的结果
const processedData = filterEmptyValueNodes(originalApiData);

该方案支持任意嵌套层级的节点处理,默认浅拷贝节点属性,如果你需要避免修改原数据对象,可以将...node替换为深拷贝逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:24:04