2017-07-19 12 views
-1

forEachを使用して、このスニペット(オブジェクトを解析する)をjavascript(es5)に書き込むためのより良い方法を見つけようとしています。簡略化es6スニペットforEach

isCurrentUserIsInSubPeriod(){ 
    let itemFounded = false 
    obj.forEach(data => { 
     if (data.check) 
     itemFounded = true 
    }); 
    return itemFounded 
} 
+1

オブジェクトには '.forEach()'メソッドが存在しないので、我々は他の/より良いソリューションのお手伝いをすることができますので、実際の問題がここにあるかを説明してください。オブジェクトにプロパティがあるかどうかを調べようとしていますか? '.check'プロパティを持つオブジェクトですか?または、オブジェクト自体に '.check'プロパティがあるかどうかを確認しようとしていますか?実際の全体的な問題が何であるかを教えてくれることなく提案されたソリューションについて尋ねる質問では、すでに考えられていたソリューションよりも優れたソリューションを提供することが不可能になっています。 – jfriend00

+0

「オブジェクトを解析する」とはどういう意味ですか? – jfriend00

+0

「オブジェクトを解析する」とは、「オブジェクトを解析する」ことを意味します。オブジェクト内のすべての値を確認してください – alan

答えて

5

代わりにArray.someを使用できます。あなたはES5構文を使用してオブジェクトを反復処理したい場合は

isCurrentUserIsInSubPeriod(){ 
    return obj.some(data => data.check); 
} 
+1

これは、 'obj'が配列であると仮定しているようです。私たちは実際にそれを知っていますか? OPは、彼らが何であれ、何かを "解析する"ことを試みていると言います。 – jfriend00

+0

@ jfriend00、はい、それは本当です。 ForEachの使用のために多くのことが配列の使用を指していますが、配列はオブジェクトのインスタンスです。多分、OPが配列を理解/説明する方法は?すぐに見つかると思います – KevBot

0

は、あなたがfor-inループを使用する必要があります。 for eachメソッドは配列でのみ使用してください。残りの文を構成するもっとも簡潔な方法は三項式である。

isCurrentUserIsInSubPeriod(){ 
    let itemFounded = false; 
    for (data in obj) { 
    data.checked ? itemFounded = true : itemFounded = false; 
    } 
    return itemFounded; 
} 
+0

'data.checked? itemFounded = true:itemFounded = false; 'itemFounded = data.checked;に簡略化することができます(これは簡潔で分かりやすくなりました)。 Btw、 'obj'は配列なので、' data'は配列のインデックス( '0'、' 1'など)になり、 'data.checked'は常に' undefined'になります。もしあれば、 'obj [data]'が必要です。 –