2016-06-21 9 views
1

私は各記事のスコアを追跡して表示しようとしています。しかし、オブジェクトに上下の項目がない場合、問題が発生します。reactjsでオブジェクトの長さの未定義アイテムを0にするにはどうすればよいですか?

これは、すべての投票のための私のデータです:

const votes = { 
    "1": { 
    "up": [ 
     "12345", 
     "12346" 
    ], 
    "down": [ 
     "22456" 
    ], 
    }, 
    "2": { 
    "up": [ 
     "12345", 
     "12346" 
    ], 
    "down": [ 
     "22456", 
     "25214", 
     "23612" 
    ] 
    } 
} 

export default votes; 

は、これは私が今、それを処理しています方法ですが、これはオブジェクトに"up""down"の両方がなければならないことが必要です。

<div style={vote}> 
    {votes[id] ? votes[id].up.length - votes[id].down.length : 0 } 
</div> 

だから、あなたがだけup要素を持っているここの場合には、私は結果がアップの唯一の長さになりたいです。同じケースのダウン:

"3": { 
    "up": [ 
     "12345", 
     "22341" 
    ] 
} //this would output a score of 2 

ご協力いただきありがとうございます。

答えて

5

配列に追加するときは、空のupdownの配列を使用してオブジェクトを初期化することをお勧めします。

これが不可能な場合は、レンダリングプロセス中にこのケースを処理する必要があります。このように:

<div style={vote}> 
    {votes[id] ? (votes[id].up || []).length - (votes[id].down || []).length : 0 } 
</div> 
+0

urヘルプありがとうございます! – Parkicism

関連する問題