2017-08-24 8 views
0
の配列に到達

私は3つの配列a1 = [], a2 = [], a3 = []を持っていて、他の配列odd[1,3,5]even[0,2,4]からいくつかの値を入れたいと思います。私は奇数からいくつかのランダムな値を取って、それにa1を入れて、選択した数を取り除き、その後、他の2つの配列に対して同じ処理をしたい。その後、私は同じ配列を使って同じことをしたい。Javascript:

私は私がのindexOfでインデックスを見つけた後、私はスプライスに選ばれた番号を削除し、math.randomで値を取得します。これは機能しますが、forを使用してプロセスを短縮できますか?

+6

あなたのコードと、それだけではなくテキスト記述を示した場合多分それが役立つだろう。この記事は、既存の作業コードの改善/最適化についてであれば – epascarello

+1

* *これは動作しますが、私は、プロセスを短縮することができ、CodeReviewsは正しい場所 – Rajesh

+0

いいえ、私は同じ機能を考えていましたさ。本当に必要ならindexOfをスキップすることができます。 destination.pushような何か(source.splice(Math.floor(Math.random()* source.length) - 1,1)) –

答えて

0

このような何か?

let aDict = {a1: [], a2: [], a3: []}; 
const odd = [1,3,5]; 
const even = [0,2,4] 


for(a of Object.values(aDict)){ 
    a.push(odd.splice(Math.floor((Math.random() * odd.length)),1)[0]); 
    a.push(even.splice(Math.floor((Math.random() * even.length)),1)[0]); 
} 

EDIT:for ofObject.values()がIEでサポートされているとは思いません。あなたはIEのサポートを必要とするのであれば、あなたはfor inObject.keys()を使用する必要があります。 hasOwnProperty()チェックをしなければならないかもしれません。