Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找具有最大值的对象属性,其中该属性为十进制_Javascript_Math Functions - Fatal编程技术网

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))
在单个组件的上下文中,majorminorpatch是整数,但是复合值,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'
在单个组件的上下文中,majorminorpatch是整数,但是复合值,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数据,或者至少提供其中的一部分吗?