2016-09-16 3 views
1

私は8つのアイテムを持つオブジェクトを持っています - それらを2つの配列に分割したい(ランダム化)。私はを達成したい何ランダム化して2つの配列にオブジェクトを分割します

オブジェクト:{1、2、3、4、5、6}オブジェクトから

をharcoded、それは自動的に2つの別々の配列を作成しなければならないとオブジェクトアイテムを取り出し、配列にランダム化します。それが繰り返されないことを確認する。

アレイ1:[3、5、6]

アレイ2:[2、1、4]

コードこれまで:

var element = { 
    1: { 
    "name": "One element", 
    "other": 10 
    }, 
    2: { 
    "name": "Two element", 
    "other": 20 
    }, 
    3: { 
    "name": "Three element", 
    "other": 30 
    }, 
    4: { 
    "name": "Four element", 
    "other": 40 
    }, 
    5: { 
    "name": "Five element", 
    "other": 50 
    }, 
    6: { 
    "name": "Six element", 
    "other": 60 
    }, 
    7: { 
    "name": "Seven element", 
    "other": 70 
    }, 
    8: { 
    "name": "Eight element", 
    "other": 80 
    } 
}; 

function pickRandomProperty(obj) { 
    var result; 
    var count = 0; 
    for (var prop in obj) 
    if (Math.random() < 1/++count) 
     result = prop; 
    return result; 
} 



console.log(pickRandomProperty(element)); 
+0

どのようにランダム化された要素を取得しますか? –

+0

あなたの現在のコードの問題は何ですか?それは正しいことと何がうまくいかないのでしょうか? –

+0

上記のコードには何も問題はありません。上の例のように、オブジェクトを2つの配列に分けようとするだけの助けが必要です。それについて行く最善の方法を試してください –

答えて

1

があなたのことを確認してくださいオブジェクト変数は配列です。 var要素= [... youritems]; あなたが持っているものがあればわからない:var element = {... your items ...}; (Splice an array in half, no matter the size?を)次にHow to randomize (shuffle) a JavaScript array?

function shuffle(array) { 
var currentIndex = array.length, temporaryValue, randomIndex; 
while (0 !== currentIndex) { 

// Pick a remaining element... 
randomIndex = Math.floor(Math.random() * currentIndex); 
currentIndex -= 1; 

// And swap it with the current element. 
temporaryValue = array[currentIndex]; 
array[currentIndex] = array[randomIndex]; 
array[randomIndex] = temporaryValue; 
} 
return array; 
} 

をこのようにそれをスプライス::(。事実上の公平なシャッフルアルゴリズムは、フィッシャー・イエーツ(別名クヌース)シャッフルである) あなたは、配列をシャッフルするために、このコードを使用することができます

var half_length = Math.ceil(arrayName.length/2);  
    var leftSide = arrayName.splice(0,half_length); 

元の配列には残りの値が含まれます。

+0

ありがとう、しかし、これはランダムそれdoesnt。 –

+0

この回答には2つの部分があります。最初のリンクでシャッフルコードを試しましたか?私はそれを含めるように編集します。 –

-2

ifロジックが意味をなさない。

if (Math.random() < 1/++count)

Math.random()は(排他的)0(含む)と1の間の任意の値をもたらすであろう。 http://www.w3schools.com/jsref/jsref_random.asp

あなたの関数は、ランダムな値を持つ配列を作成するために何もしません。

関連する問題