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

如何重构多表单isEditing状态判断的布尔值返回代码?

代码重构:判断任意表单是否处于编辑状态

原始代码

const {
      aForm,
      bForm,
      eForm,
      qForm,
    } = this.form;

return (
      aForm.isEditing ||
      bForm.isEditing ||
      eForm.isEditing ||
      qForm.isEditing
    );

尝试的写法(无法返回布尔值)

const forms = pick(this.form, [
      "aForm",
      "bForm",
      "eForm",
      "qForm",
    ]);
Object.values(forms).map(f => f.isEditing).join("||") // 需要返回布尔值

可行重构方案

方案1:用Array.some()(最优解)

some()方法会遍历数组,只要有一个元素满足条件就立即返回true,完美匹配你要判断「是否有任意一个表单在编辑」的需求,还能提前终止遍历提升性能:

const forms = pick(this.form, ["aForm", "bForm", "eForm", "qForm"]);
return Object.values(forms).some(form => form.isEditing);

方案2:直接通过键名数组判断

如果不想依赖pick工具函数,也可以直接定义表单键名数组,遍历判断:

const targetForms = ["aForm", "bForm", "eForm", "qForm"];
return targetForms.some(key => this.form[key].isEditing);

为什么你的写法不行?

你用join("||")会把每个isEditing的布尔值转成字符串拼接,最终得到的是类似"true||false||false"的字符串,不是布尔值,自然不符合需求。而some()是专门做存在性判断的数组方法,完全适配这个场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:12:44