2017-08-31 106 views
-1

我將解釋情況。使用JavaScript驗證一個對象與另一個對象

我們有兩個對象;

第一個包含驗證規則,例如:

rules = [ 
    name: { 
    length: { 
     min: 5 
    }, 
    uppercase: true 
    } 
] 

而且我們也有與人另一個對象:

people = { 
name: 'Aleg', 
name: 'Anton', 
name: 'john johnov bla bla' 
} 

我的問題是 - 什麼是驗證'people'的最佳方式obeyct,使用'rules'對象與JavaScript?

+1

「最佳」是見仁見智,從而摘的問題主題爲StackOverflow。關於你的'people'對象,應該是一個對象數組嗎?你不能像這樣在一個對象中有重複的屬性名稱。 (假設你解決了這個問題,難道你不會僅僅使用一個循環來驗證對象,查找'rules'對象中的相關規則嗎?) – nnnnnn

+1

'uppercase:true'驗證了什麼?和'人'是一個數組? – kukkuz

+1

https://github.com/flatiron/revalidator ...你可以使用它? – coderredoc

回答

1

聲明您的people排列和rules作爲對象。您可以使用下面:

var people = [ 
    {name: 'Aleg'}, 
    {name: 'Anton'}, 
    {name: 'john johnov bla bla'} 
]; 

var rules = { 
    name: [ 
     lengthValidator, 
     upperCaseValidator 
    ] 
}; 

function lengthValidator(string) { 
    var isValid = true; 
    // here put your validator logic and update isValid 
    return {length: isValid}; 
} 

function upperCaseValidator(string) { 
    var isValid = true; 
    // here put your validator logic and update isValid 
    return {uppercase: isValid}; 
} 

function validator(arrObj) { 
    _.each(arrObj, (obj) => { 
     obj.validations = []; 
     _.each(obj, (value, key) => { 
      if(rules[key]) { 
       _.each(rules[key], (validatorFunction) => { 
        obj.validations.push(validatorFunction(value)); 
       }) 
      } 
     }); 
    }); 
    return arrObj; 
} 

var validationResult = validator(people); 
console.log(validationResult); 

在這裏,您可以檢查fiddle

注:我已經使用underscore迭代,你可以找到CDN here

+0

讓我知道你是否想要澄清 –

+0

它對您有幫助嗎?如果是的話儘量接受答案。 –

相關問題