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

Angular5中TypeScript字符串相等判断失效问题

问题原因及解决办法

嘿,这个问题其实挺常见的,我一眼就瞅出问题在哪了!

你写的isDateColumn方法里,虽然在some()的回调里已经判断出匹配的DATE类型并打印了日志,但外层方法最后直接硬返回了false——这就导致不管some()有没有找到符合条件的元素,方法最终都会输出false。

为什么会这样?

Array.some()本身是会返回布尔值的:数组里只要有一个元素满足回调的条件,它就返回true,否则返回false。但你现在的写法里,回调里的return只是给some()用的(用来标记当前元素是否符合规则),而外层方法完全没接住some()的返回结果,反而直接在末尾写了return false;,这就把所有可能的正确结果都覆盖了。

修正后的代码

你只需要把some()的返回值直接作为方法的返回结果就行,同时可以优化下逻辑:

isDateColumn(columnName: string){
  // 直接返回some()的判断结果
  return this.configData.some((el) => {
    const isMatch = columnName === el.key.columnName && el.dataType === "DATE";
    if (isMatch) {
      console.log("FOUND: " + el.dataType + " For " + columnName);
    }
    return isMatch;
  });
}

如果想把逻辑拆得更清楚,也可以这么写:

isDateColumn(columnName: string){
  const hasDateMatch = this.configData.some((el) => {
    if (columnName === el.key.columnName) {
      console.log("FOUND: " + el.dataType + " For " + columnName);
      return el.dataType === "DATE";
    }
    return false;
  });
  return hasDateMatch;
}

这样修改后,当some()找到符合条件的元素时,方法就会返回true,否则返回false,完全符合你预期的逻辑啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:58:13