2017-11-03 6 views
0


私の質問は少し不明な場合があります。以前も同じ質問がありましたが、私はそれを読んで私の解決方法を理解できませんでした。regExpを使わないで色の値を確認する

私はすでに色を確認する3つの機能を作成しました。 (。。私は私が原因サイズのそれらをここに含めておりません彼らとの問題を持っていない) は、我々はそのような3つの営業機能を持っていると仮定しましょう:

function checkHex(input) { 
    // returns boolean value if input is hex color 
} 
checkHex("#1234a6"); // returns true 

function checkRGB(input) { 
    // returns boolean value if input is RGB color 
} 
checkRGB("rgb(255, 255, 112)"); // returns true 

function checkHSL(input) { 
    // returns boolean value if input is hsl color 
} 
checkHSL("hsl(122, 1, 1)"); // returns true 

私が持っている第四の機能(checkColor)を抱えています混合色の値がチェックする:

function checkColor(input) { 
    // returns boolean value if input belong to right color value 
} 

checkColor("#ccccff"); // should return true 
checkColor("rgb(255,255,200)"); // should return true 
checkColor("hls(46,0.66,0.21)"); // should return true 

質問:私は第四1(checkColor)への3つの機能すべて(checkHex、checkRGB、checkHSL)を含める必要がありますか?それ、どうやったら出来るの。私はそれについて研究し、解決するためにカップルの方法を試しましたが、私はできませんでした。
私はRegExpを使用せずにこれを実行しようとしています。私はプログラミングには新しく、以前は複数の機能を統合していませんでした。
「複数の機能を組み合わせる」ことについて私と共有できる追加のリソースは、私にも大いに役立ちます。

事前に時間と労力をいただきありがとうございます!

+0

ちょうど 'checkHex(入力)を返します|| checkRGB(入力)|| checkHSL(入力); '? –

+0

'input'がどんな文字で始まっているかを見てから、正しい関数を呼び出してください。 'rgba()'について忘れないでください。 –

答えて

0

作成した最初の3つの機能は、しばしば述語と呼ばれます。述語をグループ化するための素晴らしい方法がたくさんありますが、@ FelixKlingはコメントの中で最も簡単に言及しています。この目的のために特別な機能を作成することもできます。

// composition function 
 
const any = (...predicates) => subject => predicates.reduce((state, predicate) => (state || predicate(subject)), false); 
 

 
// predicates 
 
const biggerThan5 = x => x>5; 
 
const isOdd = x => !!(x % 2); 
 

 
// results and usage 
 
console.log(any(biggerThan5, isOdd)(10)); // true 
 
console.log(any(biggerThan5, isOdd)(2)); // false

0

あなたは、あなただけの他のものの中にそれらを使用することができ、他の関数の中に関数を含めるべきではありません。たとえば :

function checkColor(input) { 
    var isHex = checkHex(input), //store the result of function 
     isRGB = checkRGB(input), //store the result of function 
     isHLS = checkHSL(input); //store the result of function 
    return isHex || isRGB || isHLS; //returns true if one of the options is true. 
} 

function checkHex(input) { 
    // returns boolean value if input is hex color 
} 
function checkRGB(input) { 
    // returns boolean value if input is RGB color 
} 
function checkHSL(input) { 
    // returns boolean value if input is hsl color 
} 
関連する問題