2016-03-08 38 views
-1

我想辨別謂詞是否在javascript對象的所有實例中返回真值。 我的代碼沒有像預期的那樣執行,我不知道爲什麼,可以使用一些幫助/指導我要出錯的地方,因爲我沒有在所有測試用例中匹配正確的結果。我想檢查鍵/值對的值來捕捉值爲NAN但不能鍛鍊的情況。更新後的代碼在下面,它是一個正在進行的工作,我會在我有一個工作解決方案時重構它。檢查謂詞是否應該返回true或false沒有按預期工作

currentcode

測試用例應該返回false,但沒有 每一個([{ 「用戶」: 「Tinky-閃閃」, 「性」: 「男」, 「年齡」:0},{ 「用戶」 :「Dipsy」,「sex」:「male」,「age」:3},{「user」:「Laa-Laa」,「sex」:「female」,「age」 :「Po」,「sex」,「female」,「age」:4}],「age」)

every([{「name」:「Pete」,「onBoat」名稱「:」重複「,」onBoat「:true},{」name「:」FastFoward「,」onBoat「:null}],」onBoat「)

+0

添加結束'}'後,[該代碼似乎工作](https://jsfiddle.net/wyc0euz3/)(將'for..in'更改爲'for')。我不能完全理解爲什麼這些''''調用應該返回'false','age'是第一個參數中所有對象的屬性,'onBoat'可以在第二個片段中的所有對象中找到。請注意,'hasOwnProperty'測試屬性是否存在,而不是它的價值。 – Teemu

+1

你什麼時候期望'collection [c] [pre] == pre'是真的?是不是測試屬性名稱等於值的屬性? – nnnnnn

+0

你能提供一個js小提琴嗎?這會更容易理解。 –

回答

0

我整理了一下代碼:

function propertyExists(array,property) 
{ 
    var hasProperty = true; 

    array.forEach(function(element) 
    { 
     if(!element.hasOwnProperty(property)) 
     { 
      hasProperty = false; 
     } 
    }); 
    return hasProperty; 
} 

說明:

代碼循環在陣列並檢查屬性併爲每一個元件存在。 如果這樣做,它會移動到下一個。 如果不是,則將標誌hasProperty設置爲false。 當forEach循環到達數組的末尾時,返回值hasProperty

我知道這可能不是最有效的方式來做到這一點,但它是我想到的第一件事。

+0

看起來像OP想檢查屬性的價值,而不是existense,但問題很不明確。 – Teemu

+0

如果是這樣,只需更換if條件就可以輕鬆更改代碼。 –

+0

我正在通過一些關於freecodecamp的練習,這是我得到的問題。我提交了一個錯誤報告,因爲我認爲測試用例的返回值是關閉的。 – webdev8183

0

我終於能夠通過測試案例通過添加一個檢查,如果存在的價值過濾出的虛假價值,我用一系列的if語句來做到這一點,但我想有更好的方法,我有麻煩包裝我的頭來訪問JavaScript對象,所以這對我來說是一個艱難的。 Bonfire Everything be True

這是來自FreeCodeCamp,因爲編輯器不喜歡我的代碼格式我只是鏈接到答案。

相關問題