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

如何修改useClearEmptyAttributes函数实现同时过滤空字符串和空数组

问题原因

你当前的过滤逻辑依赖JS的隐式布尔转换,空数组[]在JS中属于真值,因此不会被原有逻辑过滤。

修改后的函数

export const useClearEmptyAttributes = (
  obj: { [s: string]: unknown } | ArrayLike<unknown>,
) => {
  return Object.fromEntries(
    Object.entries(obj).filter(([_, v]) => {
      // 空数组直接过滤,其余值保留原有真值判断逻辑
      return v && !(Array.isArray(v) && v.length === 0);
    })
  );
};

逻辑说明

  • 保留了你原有逻辑对假值(空字符串、null、undefined、false、0等)的过滤能力
  • 新增数组类型校验:如果值是数组且长度为0,会被判定为需要过滤的无效值

效果验证

传入测试对象:

const testObj = {
  "phone number": "",
  socialLinks: [],
  name: "张三",
  hobbies: ["看书", "编码"]
}

调用函数后返回结果为:

{
  name: "张三",
  hobbies: ["看书", "编码"]
}

完全符合你的过滤需求。

可选扩展(后续如果需要过滤空对象可使用)

如果后续需要同时过滤空对象{},可以调整过滤条件为:

.filter(([_, v]) => {
  if (!v) return false;
  if (Array.isArray(v)) return v.length > 0;
  if (typeof v === 'object' && v !== null) return Object.keys(v).length > 0;
  return true;
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:09:03