2017-06-01 14 views
0

リストからオブジェクト配列の値を検索:私はこのようになりますオブジェクト配列持ち

ユーザーフォームを

{ 
name:"Tom", 
occupation:"Programmer", 
hobbies:" ", 
foodAllergy:"fish", 
favoriteColor:"blue" 
} 

そして、このようになりますValidateFieldsArray

["hobbies", "foodAllergy", "name"] 

私が必要UserFormオブジェクト配列内のValidateFieldsArrayから入力された文字列があることを検証します。 hobbiesが空であるため、falseを返します。

現在、Forループを使用してvalidateFieldsArrayを通過していますが、正常に動作します。私はもっ​​と良い解決策があるのだろうかと思っています。私もtrimの文字列です。

私は値ではなくキーを比較しているので、ロダッシュは使用できません。私はこのような何かをしてstring.trimのような追加のチェックを追加したい()==「」:!有効ながそうでなければブールfalseを返す場合

_.result(_.find(UserForm, { key in ValidateFieldsArray}), value); 

答えて

3

Array.everyを使用すると、長さがチェックされたアレイ

var isValid = ValidateFieldsArray.every(v => UserForm[v] && UserForm[v].trim().length); 
+0

内のすべてのキーをチェックするために、より適切と思われます必要な文字列に?空文字列は偽です。私よりもまだ優れています。 –

+0

@ JaredSmith - いいえ、 'length'チェックはおそらく必要ではありません – adeneo

3
let isValid = validateFieldsArray.reduce((obj, k) => { 
    return (obj && obj[k].trim()) ? obj : false; 
}, UserForm); 

UserFormオブジェクトを返します。オブジェクトには空白以外の文字列が必要です。あなたはvarletを交換し、矢印機能ならば、コードが有効ES 5で、バックIE 9に働く

関連する問題