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

