Angular 迭代一个有两个条件的数组
Angular iterate an array with two conditions
我有这个数组和这些值:
levels$: Observable<any[]> = [
{
name: 'first level primary school'
},
{
name: 'second level primary school'
},
{
name: 'first level secondary school'
}
]
const isPrimarySchool = false
const isSecondarySchool = false
并且我想遍历数组,查找是否有字符串包含 'primary' 或 'secondary' (可能两者都有),并将 isPrimarySchool 或 isSecondarySchool 的值设置为 true ,或两者皆有。
我找到的解决这个问题的方法是这个:
this.levels$.subscribe(levels =>
levels.forEach(level => {
if (level.name.toLowerCase().includes('primary') {
this.isPrimarySchool = true
}
if (level.name.toLowerCase().includes('secondary')) {
this.isSecondarySchool = true
}
})
)
有没有更好的方法来解决两个 'if' 部分,使用 lodash 或正常 javascript?
您可以使用 If/Else 而不是 2 个 If,并使用第三个 else。
请记住,使用 If/elsif/else 比添加 2 个 If 成本更低。
或者,您可以使用三元运算符,但这很可能不是更好的方法。
this.levels$.subscribe(levels =>{
this.isPrimarySchool =levels.some(level => level.name.toLowerCase().includes('primary'));
this.isSecondarySchool = levels.some(level => level.name.toLowerCase().includes('secondary'));
})
我有这个数组和这些值:
levels$: Observable<any[]> = [
{
name: 'first level primary school'
},
{
name: 'second level primary school'
},
{
name: 'first level secondary school'
}
]
const isPrimarySchool = false
const isSecondarySchool = false
并且我想遍历数组,查找是否有字符串包含 'primary' 或 'secondary' (可能两者都有),并将 isPrimarySchool 或 isSecondarySchool 的值设置为 true ,或两者皆有。
我找到的解决这个问题的方法是这个:
this.levels$.subscribe(levels =>
levels.forEach(level => {
if (level.name.toLowerCase().includes('primary') {
this.isPrimarySchool = true
}
if (level.name.toLowerCase().includes('secondary')) {
this.isSecondarySchool = true
}
})
)
有没有更好的方法来解决两个 'if' 部分,使用 lodash 或正常 javascript?
您可以使用 If/Else 而不是 2 个 If,并使用第三个 else。
请记住,使用 If/elsif/else 比添加 2 个 If 成本更低。
或者,您可以使用三元运算符,但这很可能不是更好的方法。
this.levels$.subscribe(levels =>{
this.isPrimarySchool =levels.some(level => level.name.toLowerCase().includes('primary'));
this.isSecondarySchool = levels.some(level => level.name.toLowerCase().includes('secondary'));
})