Javascript 查找具有最大值的对象属性,其中该属性为十进制
我目前正在使用:Javascript 查找具有最大值的对象属性,其中该属性为十进制,javascript,math-functions,Javascript,Math Functions,我目前正在使用: last = Math.max.apply(Math, response.data.map((o: any) => { return o.name; })) 在response.data数组中查找“name”值最高的对象。尽管16.12是最大值,但它返回16.9,因为我认为它只是在看1并跳过它。我如何使它考虑到完整的小数点 编辑: 通过的数据是: const数组=[{ 姓名:16.3 }, { 姓名:16 }, { 姓名:17 }, { 姓名:17.3 },
last = Math.max.apply(Math, response.data.map((o: any) => {
return o.name;
}))
在response.data数组中查找“name”值最高的对象。尽管16.12是最大值,但它返回16.9,因为我认为它只是在看1并跳过它。我如何使它考虑到完整的小数点
编辑:
通过的数据是:
const数组=[{
姓名:16.3
},
{
姓名:16
},
{
姓名:17
},
{
姓名:17.3
},
{
姓名:19
}
]
console.log(Math.max(…array.map({name})=>name%1!==0&&name))
const数组=[{
姓名:16.3
},
{
姓名:16
},
{
姓名:17
},
{
姓名:17.3
},
{
姓名:19
}
]
console.log(Math.max(…array.map({name})=>name%1!==0&&name))
在单个组件的上下文中,major、minor和patch是整数,但是复合值,major.minor.patch本身不是有效数字。这就是为什么它们存储为字符串,句点只是一个分隔符而不是小数点
要正确比较版本,您需要将字符串分解为其组成部分,并分别比较每对数字。下面的示例通过按降序排序然后取第一个值来实现这一点
注意:由于问题中不清楚具体要求是什么,因此缩写版本,例如1.1
,为了简单起见,此处将被视为1.1.0
——通常更习惯于说1.1
代表给定集合可用的最高版本1.1.x
constcmpversiondesc=(a,b)=>{
常量as=a.split('.').map(编号)
常量bs=b.split('.').map(编号)
返回(bs[0]| | 0)-(as[0]| | 0)
||(bs[1]| | 0)-(as[1]| | 0)
||(bs[2]| | 0)-(as[2]| | 0)
}
const latestVersion=版本=>
[…版本].sort(cmpVersionDesc)[0]
常量版本=[
'16.9',
'16.12',
'16.12.1',
'16.1'
]
console.log('latest',latest version(versions))//'16.12.1'
在单个组件的上下文中,major、minor和patch是整数,但是复合值,major.minor.patch本身不是有效数字。这就是为什么它们存储为字符串,句点只是一个分隔符而不是小数点
要正确比较版本,您需要将字符串分解为其组成部分,并分别比较每对数字。下面的示例通过按降序排序然后取第一个值来实现这一点
注意:由于问题中不清楚具体要求是什么,因此缩写版本,例如1.1
,为了简单起见,此处将被视为1.1.0
——通常更习惯于说1.1
代表给定集合可用的最高版本1.1.x
constcmpversiondesc=(a,b)=>{
常量as=a.split('.').map(编号)
常量bs=b.split('.').map(编号)
返回(bs[0]| | 0)-(as[0]| | 0)
||(bs[1]| | 0)-(as[1]| | 0)
||(bs[2]| | 0)-(as[2]| | 0)
}
const latestVersion=版本=>
[…版本].sort(cmpVersionDesc)[0]
常量版本=[
'16.9',
'16.12',
'16.12.1',
'16.1'
]
console.log('latest',latest version(versions))//'16.12.1'
请同时添加数据。为什么16.12
大于16.9
?@NinaScholz编辑以添加数据我认为代码没有问题。你能再解释一下什么数据给出了错误的结果吗?我想你误解了@NatalieM 16.9大于16.12,这就是为什么你会得到这个答案。是的,考虑到我想要的,数学函数可能不是最合适的…首先,数据指的是发布版本,它们以字符串的形式出现。我已经转换为浮动,因为我认为它与他们的工作字符串将是棘手的。因此,16.9版比16.12版旧,但一旦转换为浮动版就不是了。我已经找到了一个解决方法,因为返回的数据中的第一项是最新的(16.12),这消除了转换的需要。谢谢大家!请同时添加数据。为什么16.12
大于16.9
?@NinaScholz编辑以添加数据我认为代码没有问题。你能再解释一下什么数据给出了错误的结果吗?我想你误解了@NatalieM 16.9大于16.12,这就是为什么你会得到这个答案。是的,考虑到我想要的,数学函数可能不是最合适的…首先,数据指的是发布版本,它们以字符串的形式出现。我已经转换为浮动,因为我认为它与他们的工作字符串将是棘手的。因此,16.9版比16.12版旧,但一旦转换为浮动版就不是了。我已经找到了一个解决方法,因为返回的数据中的第一项是最新的(16.12),这消除了转换的需要。谢谢大家!这仍然是16.9,如果你把另外17个值改为17.11会怎么样?那是不可能的。。更改答案中的值,您应该会再次获得最高的小数点。您可以在问题中提供完整的json数据,或者至少是其中的一部分吗?这仍然是16.9,如果您将其他17值更改为17.11,会发生什么情况?这是不可能的。。更改答案中的值,您应该再次获得最高的小数点。您可以在问题中提供完整的json数据,或者至少提供其中的一部分吗?