2017-01-19 8 views
0

私はいくつかの外部JSONデータを読み込み、アイテムがチェックされているかどうかについてカスタムプロパティを追加して少し修正しようとしています。 isCheckedプロパティは外部データに存在しません。動的に追加されたプロパティが返される不確定

次のように私は、プロパティと値を追加してい:

this.props.information.options[optionId].isChecked = true; 

問題は、私は後でoptions配列を反復処理するとき、isCheckedプロパティは常にundefinedを返し、次のとおりです。

this.props.information.options.forEach((option, index) => { 
    //Check if it should be checked 
    var ministry = this.props.information.name; 

    console.log(option); //outputs object with isChecked property (see screenshot) 

    if (option.isChecked !== undefined) { 
    isChecked = option.isChecked; 
    } 
    else { 
    console.log(option["isChecked"]); //Always outputs undefined 
    } 
} 

だから私は本当に混乱しています。 Firefoxはオブジェクトの一部としてプロパティを表示していますが、そのオブジェクトを使用するかどうかに関係なく、undefinedとして返します。または[]表記を使用します。

アイデア?

enter image description here

+0

あなたはChromeで同じ動作を持っていますか? – connexo

+0

は 'option.isChecked'が定義されていますか? – Anselm

+0

非同期呼び出しからコールバックにプロパティを追加していますか? – connexo

答えて

0

条件が正しくありません。 isCheckedであるかどうかを確認する必要があります。それが期待値と厳密に等しいかどうかを確認してください。

var options = [{}, {}, {}]; 
 
options[0].isChecked = true; 
 

 
options.forEach(function(option, index) { 
 
    if (option.isChecked === true) { 
 
    console.log('checked'); 
 
    } else { 
 
    console.log('not checked'); 
 
    } 
 
});

+0

私は疲れましたが、まだ未定義になっています。オブジェクトは、コンソールでブラウズしたときに 'isChecked:true'を示していますが、' true'であるかどうかテストしていないので 'undefinted'を出力します。 –

+0

@EricRovtarあなたの完全な例をフィドルに投稿することは可能でしょうか? –

+0

すみません。スクリプトはコンパイルされていませんでした。 trueをテストすることで問題が解決されます。申し訳ありません。ありがとう、マックス! –

関連する問題