我对如何使用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