我對如何使用lodash _.some()函數檢查集合(對象)有點困惑。使用lodash驗證集合的正確類型
var x = {prop1: 800, prop2: 800, prop3: 'test'};
_.some(x, i => _.isNaN(i))
//false
_.some(x, _.isNaN)
//false
我對如何使用lodash _.some()函數檢查集合(對象)有點困惑。使用lodash驗證集合的正確類型
var x = {prop1: 800, prop2: 800, prop3: 'test'};
_.some(x, i => _.isNaN(i))
//false
_.some(x, _.isNaN)
//false
既然你想知道,如果所有屬性都是數字,您可以使用此:
!_.some(x, i=> !_.isNumber(i))
我不知道關於_.some
和_.every
的perforamance差異,但你當然也可以使用:
_.every(x, i=> _.isNumber(i))
_.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
從lodash DOC _.isNaN是基於Number.isNaN,與全局isNaN不同,它對未定義的值和其他非數字值返回true。
_.some(x, isNaN)
//true
什麼問題? – Eddi
我建議,這兩個some-fn的結果是真實的,因爲prop3是一個字符串 – Zantinger
這是不正確的。 '_.isNaN(「string」)'將返回false,因爲它不是'NaN'。試着在控制檯中運行這個語句,你會看到這個。 – Eddi