2017-08-29 19 views
1

から離れ配列から3までのランダムな値を取得します。は、私は、次のしている与えられた値

最初のチェックです:

if("bg-" + i == this.props.bgImg) { 

しかし、私はそのよう「this.props.bgImg」と一致していない他の3つのランダムな値を取得する必要があります(一致があることを確認します)ユーザーは4つのオプションから選択できます。 配列の出力を3つのランダムな値+一致条件に制限する方法はありますか?

現時点では{}都市はのみこれはあなたの配列のうち3つのランダムな要素を与える

答えて

1

つの値を返しています。 select要素を配列から削除し、3つのランダムを取得し、4つの選択肢の結果に配置することができます。

Array.prototype.getRandom= function(num, cut){ 
 
    var A= cut? this:this.slice(0); 
 
    A.sort(function(){ 
 
     return .5-Math.random(); 
 
    }); 
 
    return A.splice(0, num); 
 
} 
 
var a1= ['bg-1', 'bg-2', 'bg-3', 'bg-4', 'bg-5', 'bg-6', 'bg-7']; 
 
console.log(a1.getRandom(3))

2

あなたはおそらく、試合を取得するために、一度反復する必要がすでにやっているように、その後、試合を含め、その試合を保存して、4つの都市の配列を持ってまで、ランダムな値を試してみましたあなたは以前に見つかった。

何か

よう
let cities = []; 
let added = []; 

this.cities.forEach((city, i) => { 
    if("bg-" + i == this.props.bgImg) { 
    cities.push(<p data-city={"bg-" + i} onClick={this.goNext.bind(this)} key={i}>{city}</p>); 
    added.push(i); 
    } 
}); 

while (added.length < 3) { 
    let rand = this.cities[Math.floor(Math.random() * this.cities.length)]; 
    if (!(added.includes(rand)) { 
    let city = this.cities[rand]; 
    cities.push(<p data-city={"bg-" + rand} onClick={city.goNext.bind(city)} key={i}>{city}</p>); 
    added.push(rand); 
    } 
} 
関連する問題