2012-03-15 5 views
1

私は、一例として、次のオブジェクトをとっている:jQueryの:オブジェクト内のシャッフルオブジェクト

var questions = { 
    "1": { 
     "question": "What animal goes 'woof'", 
     "a": "Duck", 
     "b": "Cat", 
     "c": "Dog", 
     "answer": "Dog" 
    }, 
    "2": { 
     "question": "What color is a giraffe", 
     "a": "Yellow", 
     "b": "Orane", 
     "c": "Blue", 
     "answer": "Yellow" 
    }, 
    "3": { 
     "question": "What is 2 + 2", 
     "a": "6", 
     "b": "4", 
     "c": "9", 
     "answer": "4" 
    }, 
    "4": { 
     "question": "What is 4 + 8", 
     "a": "12", 
     "b": "17", 
     "c": "100", 
     "answer": "12" 
    }, 
    "5": { 
     "question": "What is 4 - 1", 
     "a": "5", 
     "b": "91", 
     "c": "3", 
     "answer": "3" 
    } 
}; 

私は特定の方法でこれらの質問をシャッフルしたいと思います。

私はプロパティ名と順序(1,2,3など)を維持したいが、値をシャッフルする。

したがって、「質問」の最初のプロパティは「1」ですが、「質問」、「a」、「b」、「c」、「回答」を含むオブジェクトはシャッフルされます。

うまくいけばうまくいけば、私が不明であるかどうか尋ねてください。事前にみんなありがとう!

+5

オブジェクトのプロパティの順序はありません。なぜあなたは配列を使いませんか? – pimvdb

+0

あなたの権利、pimvdbに感謝します。私は別の問題で盲目になっていて、この質問がどれほどばかげているかを考えるのをやめなかった。 – DaveKingsnorth

答えて

3

まず、「1」、「2」、「3」のプロパティを持つ点はありません。あなたの配列は質問オブジェクトの配列である必要があります。第1のインデックス(0)にあるものは「1」であり、第2のインデックスは「2」である。これは、位置によって推測することができます。

var question = [{question 1 data}, {question 2 data}]; 

は、あなたがそれをやって、それを単純化したら、1のようなシャッフル機能がhereを説明使用することができます。ここで

+0

あまりにも長い間、私はここに目的が必要だと思ったという理由で長すぎます。愚かなことに、私は効果的に配列を作成しました。ありがとう – DaveKingsnorth

+0

@DaveKingsNorth私は二番目のMoo-Juiceの答えです。なぜなら私はJsonのフィードを常に扱っているからです。配列だけで人生が楽になります。 – zero

0

は、よりよいデータ構造です:

var questions = [ 
    { "question": "What animal goes 'woof'", "answers": ["Dog","Cat","Duck"] }, 
] 

すなわち、最初の答えは常に正しいです。

コードでは、最初の答えを変数にコピーして(正しい答えを知っている)、answers配列をシャッフルするだけです。

+0

ありがとうアーロン、あなたの権利は、おそらくより良い形式です。私は現在の書式を維持し、代わりに質問オブジェクトをオブジェクトの配列にするつもりです(いつも私はプッシュされていて、スクリプトの一部を書き直すことはしません)。 – DaveKingsnorth

関連する問題