2016-11-22 91 views
0

我對如何使用lodash _.some()函數檢查集合(對象)有點困惑。使用lodash驗證集合的正確類型

var x = {prop1: 800, prop2: 800, prop3: 'test'}; 

_.some(x, i => _.isNaN(i)) 
//false 

_.some(x, _.isNaN) 
//false 
+0

什麼問題? – Eddi

+0

我建議,這兩個some-fn的結果是真實的,因爲prop3是一個字符串 – Zantinger

+0

這是不正確的。 '_.isNaN(「string」)'將返回false,因爲它不是'NaN'。試着在控制檯中運行這個語句,你會看到這個。 – Eddi

回答

0

既然你想知道,如果所有屬性都是數字,您可以使用此:

!_.some(x, i=> !_.isNumber(i)) 

我不知道關於_.some_.every的perforamance差異,但你當然也可以使用:

_.every(x, i=> _.isNumber(i)) 
0

_.isNaN('test')返回false。這是一個string

_.isString('test')是你在找什麼。

_.some(x, (i) => { 
    console.log(_.isString(i)); 
}); 

// false 
// false 
// true 

編輯:剛剛看到您的評論。如果要檢查每一個值是一個數字,你可以這樣做:

_.every(x, (i) => { 
    console.log(i); 
    return _.isNumber(i); 
}) 

//false 
0

從lodash DOC _.isNaN是基於Number.isNaN,與全局isNaN不同,它對未定義的值和其他非數字值返回true。

_.some(x, isNaN) 
//true