2017-12-11 26 views
0

私はこの質問が愚かに聞こえることを知っていますが、私はそれが私が望むことを可能にする方法を知らない。ここで 定義される前にオブジェクトプロパティにアクセスする方法はありますか?

は私のコードです:私はrandomSecondaryNation ===(オブジェクトを比較どこ

function createPerson() { 

    var x1 = Math.floor(Math.random()*101); // Random number picker 

    var personObject = { 
    primaryNation: primNation(), 
    secondaryNation: secNation(), 
    }; 

    function createRandomNation() {    //Random nation picker 

    var nations = ["Germany", "USA", "France"]; 
    var randomNation = nations[Math.floor(Math.random() * nations.length)]; 
    return randomNation; 
    } 



    function primNation(){ 

    var randomPrimaryNation = createRandomNation(); 
    return randomPrimaryNation; 
    } 


    function secNation() { 

    var randomSecondaryNation = []; 

    if (x1 >= "10") { 
     randomSecondaryNation = createRandomNation(); 
     if (randomSecondaryNation === personObject.primNation){  //// <---There is the problem 
     randomSecondaryNation = false; 
     } 
    } 
    else { 
     randomSecondaryNation = false; 
    } 

    return randomSecondaryNation; 
    } 
    console.log(personObject); 
} 

問題があるが、それは定義された「完成」されていません

が別々作成するための唯一の方法です。オブジェクトと一緒にそれらを割り当てるか、またはこれを行うには賢く/より高速な方法はありますか?

ありがとう!ここ

+0

? – epascarello

+1

あなたがしようとしていることは意味をなさない。無作為に生成された第二次国家と、まだ存在しない第二次世代国家とを比較しています。また、x1が数値で、 "10"が文字列であるときに、 'x1> =" 10 "ならば比較します。また、 'randomSecondaryNation'は配列として始まり、次に' createRandomNation() '戻り値の文字列になり、if/else条件では' false'に設定します。なぜその変数は配列、文字列、ブール値ですか?あなたは正確に何をしようとしていますか?あなたの試行された解決策ではなく、問題に対処しましょう。 – mhodges

+0

@epascarelloしかし、この関数を一度呼び出すと、これらの2つの異なるプロパティをどのように書くことができますか? – Andy

答えて

0

があるが、次の2つの機能を組み合わせることができる方法でありますrandomSecondaryNationが配列として開始された後、文字列値が割り当てられ、条件付きでブール値になる理由はまだ分かりません。これには正当な理由があるかもしれませんが、私の経験上、これは起こるのを待っているバグです。とにかく、ここに行く:

1つの呼び出しを行うと、プライマリとセカンダリを持つオブジェクトを返さないのはなぜ

function createPerson() { 
 

 
    var x1 = Math.floor(Math.random()*101); // Random number picker 
 
    
 
    function createRandomNation() {    //Random nation picker 
 
    var nations = ["Germany", "USA", "France"]; 
 
    var randomNation = nations[Math.floor(Math.random() * nations.length)]; 
 
    return randomNation; 
 
    } 
 
    
 
    function generateNations() { 
 
    var randomPrimaryNation = createRandomNation(); 
 
    var randomSecondaryNation = []; 
 

 
    if (x1 >= "10") { 
 
     randomSecondaryNation = createRandomNation(); 
 
     if (randomSecondaryNation === randomPrimaryNation){ 
 
     randomSecondaryNation = false; 
 
     } 
 
    } 
 
    else { 
 
     randomSecondaryNation = false; 
 
    } 
 

 
    return { 
 
     primaryNation: randomPrimaryNation, 
 
     secondaryNation: randomSecondaryNation 
 
    }; 
 
    } 
 
    
 
    var personObject = generateNations(); 
 
    console.log(personObject); 
 
} 
 

 
createPerson(); 
 
createPerson(); 
 
createPerson();

+1

完璧!どうもありがとう! – Andy

+1

私はこの作業をするのに約4時間かかった – Andy

+0

あなたが以前に触れたバグは起こっています:D – Andy

関連する問題