TypeScript中如何正确判断名称含指定后缀,避免重复添加
修复重复添加"(Organic)"标签的问题
你的代码核心问题在于错误使用了in运算符——它用来检查对象是否包含某个属性,而非判断字符串是否包含子串。要解决重复添加标签的问题,需要直接检查当前项的name字段是否已经包含"(Organic)"。
修正后的代码
isOrganic() { for (let i = 0; i < this.items.length; i++) { const item = this.items[i]; if (item.organic) { // 检查名称是否已包含目标标签 if (!item.name.includes(' (Organic)')) { item.name += ' (Organic)'; } } } }
关键改进点
- 替换错误的
' (Organic)' in this.items判断,改为item.name.includes(' (Organic)'),直接校验名称字符串中的子串存在性 - 使用
+=替代concat,语法更简洁直观 - 提取
this.items[i]到变量item,提升代码可读性和维护性
可选优化:精确匹配结尾标签
如果希望仅当标签出现在名称末尾时才判定为已存在(避免名称中间包含该子串的误判),可以改用endsWith方法:
if (!item.name.endsWith(' (Organic)')) { item.name += ' (Organic)'; }
内容的提问来源于stack exchange,提问作者MyDisplayName
相关产品推荐
相关产品推荐

