Javascript 有没有办法用_pickBy()过滤浮点数的对象
我尝试过滤一个对象,并使用_pickbylodash方法过滤以仅显示大于9.8的版本。但它并没有像预期的那样发挥作用。我的代码在下面Javascript 有没有办法用_pickBy()过滤浮点数的对象,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,我尝试过滤一个对象,并使用_pickbylodash方法过滤以仅显示大于9.8的版本。但它并没有像预期的那样发挥作用。我的代码在下面 let test_obj= { "version-1":{ "path":"abcd", "version":"9.1" }, "version-2":{ "path":&qu
let test_obj= {
"version-1":{
"path":"abcd",
"version":"9.1"
},
"version-2":{
"path":"efgh",
"version":"9.9.1"
},
"version-3":{
"path":"bbbbbb",
"version":"9.10.0"
},
"version-4":{
"path":"cccccc",
"version":"9.9.0"
},
"version-5":{
"path":"kkkkkkk",
"version":"9.8"
}
}
let output = _.pickBy(test_obj, (v,k) => v.version === "" || parseFloat(v.version) >= parseFloat(9.8));
上述代码的输出为
{
"version-2":{
"path":"efgh",
"version":"9.9.1"
},
"version-4":{
"path":"cccccc",
"version":"9.9.0"
},
"version-5":{
"path":"kkkkkkk",
"version":"9.8"
}
}
JS小提琴:
它还应该添加“version-3”
,因为它大于9.8。但它忽略了9.10.0。
有没有办法做到这一点。非常感谢您的帮助。您可以在选项参数中与numeric:true
一起使用
v.version.localeCompare("9.8", undefined, { 'numeric': true }) >= 0
即使版本中有超过1个小数点,如9.8.1
let test_obj={
“第1版”:{
“路径”:“abcd”,
“版本”:“9.1”
},
“第2版”:{
“路径”:“efgh”,
“版本”:“9.9.1”
},
“第3版”:{
“路径”:“bbbbbb”,
“版本”:“9.10.0”
},
“第4版”:{
“路径”:“中交”,
“版本”:“9.9.0”
},
“第5版”:{
“路径”:“kkkkk”,
“版本”:“9.8”
}
}
让输出=\ u0.pickBy(
测试对象,
v=>v.version===“v.version.localeCompare”(“9.8”,未定义,{'numeric':true})>=0);
console.log(输出)
尝试使用.toFixed(2),它将保留2位小数。toFixed()也不起作用。请检查JSIDLE链接