Javascript 有没有办法用_pickBy()过滤浮点数的对象

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

我尝试过滤一个对象,并使用_pickbylodash方法过滤以仅显示大于9.8的版本。但它并没有像预期的那样发挥作用。我的代码在下面

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链接