2017-08-16 6 views
-1

私は衣装のランダマイザーを作っています。しかし、白いシャツに白いネクタイのような奇妙な服を着けないように、いくつかのルールを追加したいと思います。または、グラフィックティーのネクタイ。またはシャツの上にタートルネックを身に着けている。電卓にカスタムルールを追加するには?

これはこれまでのところ、コードです:

 var shirts = ["White", "navy", "light blue", "gray"]; 
     var pants = ["black", "navy", "gray"]; 
     var ties = ["red and blue squares", "purple", "white", "red"]; 

     var random_shirt = shirts[Math.floor(Math.random()*shirts.length)]; 
     var random_pants = pants[Math.floor(Math.random()*pants.length)]; 
     var random_tie = ties[Math.floor(Math.random()*ties.length)]; 

     document.write(" shirt: " + random_shirt + " pants: " + random_pants + " tie: " + random_tie); 

私がいた場合、それがで行うのを知っていると他の人の、私は方法がわかりません。

私のJSの文盲を許してください。私はそれを学んだが、実際にそれを使ったことはありません今まで。

あなたは

var random_shirt = [random logic]; 

/* 
    This will iterate over your pants array, returning a filtered array 
    with containing the items that returned true 
    item: the actual item 
    index: index of the actual item 
    array: original array 
*/ 
filtered_pants = pants.filter(function(item, index, array) { 
    if (item == random_shirt) { 
    // This item won't be in the filtered array 
    return false; 
    } 
    if ([another custom rule]) { 
    return false; 
    } 
    /* 
    After passing all the rules return true to include this item in 
    the filtered array 
    */ 
    return true; 

}); 

// Now shuffle over the filtered array 
var random_pants = filtered_pants[Math.floor(Math.random()*pants.length)]; 

は、それからちょうどそれを繰り返すランダムシャツの結果に基づいて、ズボンの配列をフィルタリングすることができます。

おかげ

+0

だけFYI:あなたはここで特定のユーザーに叫ぶことはできません。 @記法は、誰かが最初にこの特定の質問または回答にコメントしたり掲示したり、回答している場合にのみ機能します。誰かが別の質問(あなたや他の誰か)にコメントしたり掲示したりした場合、それは機能しません。 –

答えて

1

severalsはこれを行う方法がありますが、これは私の提案ですネクタイで

フィルタメソッドのドキュメントを確認してください - > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

また、あなたは似て減らす方法を使用することができます - >https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

あなたはかなり、これらの方法を理解して、このプレイリストを見て、それは多くのことをお手伝いしますない場合 - >https://www.youtube.com/watch?v=BMUiFMZr7vk&list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84

関連する問題