2015-06-10 33 views
2

我試圖使用Underscore.js libarary的findWhere函數來有效地從node.js服務器上的數組中找到一個對象,我無法理解爲什麼它總是返回undefined。下劃線_.find當它存在時找不到數組中的元素

我使用節點控制檯測試了函數,並且該對象definetely包含具有指定鍵的對象,但在使用findWhere時仍然沒有返回任何內容。

在這裏,我保證爲我尋找findWhere中我希望能有返回的對象確實相等的匹配值的「夾具」鍵的值:

「55785f4e38bd12511018145d」 ==預測[0] .fixture;

真正

當檢查數組中舉行了什麼樣的價值觀正在搜索的findWhere我確認值確實存在:

預測

[{夾具: '55785f4e38bd12511018145d' }]

檢查我希望返回的值rned:

預測[0] .fixture

'55785f4e38bd12511018145d'

運行其返回未定義findWhere查詢:

變種foundPrediction = underscore.findWhere(預測, {fixture:'55785f4e38bd12511018145d'});

不確定

我能想到的唯一原因是這東西有可能是與鑄造,或者一個「===」返回函數內假的,但有什麼辦法,我可以得到findWhere返回所需的對象,或者我將不得不訴諸手動搜索使用for循環?

在此先感謝!

回答

1

你的代碼沒有錯。看起來你在控制檯中運行,這就是爲什麼在敲回車後,控制檯顯示爲未定義。您可能認爲foundPrediction值是未定義的。您需要安慰foundPrediction變量以獲得所需的結果。

同樣,鑄造沒有錯,因爲它返回true。

var predictions = [{ 
    fixture:'55785f4e38bd12511018145d' 
}] 
console.log('55785f4e38bd12511018145d' === predictions[0].fixture); 
var foundPrediction = _.findWhere(predictions, {fixture: '55785f4e38bd12511018145d'}); 
console.log(foundPrediction); 

我已將代碼添加到jsFiddle中。希望它有幫助

相關問題