2017-07-19 68 views
-1

我想找到一個更好的方法來寫這段代碼(解析一個對象)在JavaScript(es5)使用forEach。簡化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

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

這似乎認爲'obj'是一個數組。我們真的知道嗎? OP說他們試圖「解析一個對象」,不管它是什麼。 – jfriend00

+0

@ jfriend00,是的,那是真的。儘管很多事情都指向使用數組,因爲使用了forEach,並且數組是對象的實例。也許這就是OP如何理解/解釋數組?我想我們很快就會發現 – KevBot

0

如果你想使用ES5的語法來遍歷一個對象,你應該使用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;'(這更簡潔易懂)。順便說一句,因爲'obj'是一個數組,'data'將是數組的索引*('0','1'等),'data.checked'將始終是'undefined'。如果有的話,你需要'obj [data]'。 –