0
私はフォームを検証する機能を書いています。私はevery
メソッドを使用して、すべての条件が渡されていることを確認しています。フィールドが有効でない場合、偽値が返され、その名前がinvalidFields
配列にプッシュされます。すべてがうまくいけば、この関数はtrue
を返します。次の.push()アクションを繰り返さないようにする方法は?
validateForm() {
this.isValid = this.validatingFields.every(field => {
const pattern = field.validation.pattern
const match = field.validation.match
if (match) {
const matchRegex = this.convertToRegex(match)
if (!matchRegex.test(field.value)) this.invalidFields.push(field.name)
return matchRegex.test(field.value)
}
if (pattern) {
if (pattern.test(field.value)) this.invalidFields.push(field.name)
return pattern.test(field.value)
}
return true
})
}
しかし、あなたは私がすべてのif文でthis.invalidFields.push(field.name)
を行う必要が見ることができますように。この繰り返しを避ける方法はありますか?あなただけの余分なOR
とif文1に両方のケースを置けばまあ
validatingFields: [{
name: 'name',
type: 'text',
value: '',
validation: {
required: true
}
}, {
name: 'company',
type: 'text',
value: '',
validation: {
// pattern: util.regex().email
match: 'name'
// minLength: 2,
// maxLength: 4
}