2017-08-31 8 views
-1

状況を説明します。JavaScriptを使用して1つのオブジェクトを別のオブジェクトに検証する

2つのオブジェクトがあります。

最初の1は、例えば、検証ルールが含まれています

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

そしてまた、我々は、人々と別のオブジェクトを持っている:

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

私の質問は - 'people'を検証するための最良の方法は何ですかob38、'rules'オブジェクトをJavaScriptで使用していますか?

+1

「ベスト」を見つけることができます意見の問題であるため、オフStackOverflowのトピックです。あなたの 'people'オブジェクトに関して、それはオブジェクトの配列でなければなりませんか?そのような単一のオブジェクトに重複するプロパティ名を持つことはできません。 (あなたがそれを修正したと仮定すると、 'rules'オブジェクト内の関連するルールを調べるために、検証されるオブジェクトのループを使用しませんか?) – nnnnnn

+1

'大文字:真 'は何を検証しますか? 「人々」は配列ですか? – 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

それは役に立ちましたか?もしそうなら、答えを受け入れるようにしてください。 –

関連する問題