我正在尝试在 Typescript 中创建一个条件来检查名称中是否已存在特定单词。
我有这个功能:
isOrganic() {
for (let i = 0; i < this.items.length; i++) {
if(this.items[i].organic) {
if (' (Organic)' in this.items){
this.items[i].name = this.items[i].name
} else {
this.items[i].name = this.items[i].name.concat(' (Organic)')
}
}
}
}
我想检查“(有机)”标签是否已经存在。如果是,则按原样使用名称。如果不存在,请添加它。相反,它只是不断地一遍又一遍地添加标签...... 所以:
Apple (Organic) (Organic) (Organic) etc...
我知道问题出在这一行:
if (' (Organic)' in this.items)
我只是不知道如何设置条件。
这将实现你想要的:
if this.items[i].name.endsWith(' (Organic)')
首先,您需要全面深入了解该项目的名称。然后,您需要在字符串上调用
contains
或 endsWith
等方法,因为 in
运算符不适用于字符串。
完整示例:
class Foo {
constructor() {
this.items = []
}
isOrganic() {
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].organic) {
if (this.items[i].name.endsWith(' (Organic)')){
this.items[i].name = this.items[i].name
} else {
this.items[i].name = this.items[i].name.concat(' (Organic)')
}
}
}
}
}
const foo = new Foo()
// test data
foo.items = [
{ name: "A", organic: false },
{ name: "B", organic: true },
{ name: "C (Organic)", organic: true },
]
foo.isOrganic()
console.log(foo.items)