我有一个字符串数组,其中包含以点号表示的数字,如下所示:
var arr = ['1.2.5.4', '1.2.5.3'];
我希望能够找到表示最高值的字符串。
我已经试过了
Math.max.apply(null, arr)
由于有多个小数,它根本不起作用。
最佳答案
这似乎是一个更简单的解决方案:
function latest (versions) {
versions.sort (function (a, b) {
a = a.split ('.');
b = b.split ('.');
for (var i = 0; i < a.length && i < b.length && a[i] === b[i]; i++);
return ((i === a.length) || (+a[i] < +b[i])) ? 1 : -1;
});
return versions[0];
}
[
latest (['1.2.5.4', '1.3.5.3', '1.2.3.4.5', '1.24.2.1', '1.2.52']),
latest (['1.2.5.4', '1.3.5.3', '1.2.3.4.5', '1.2.52']),
latest (['1.2.5.4', '1.2.3.4.5', '1.2.52']),
latest (['1.2.5.4', '1.2.3.4.5'])
]
/* Displays on JS console
["1.24.2.1", "1.3.5.3", "1.2.52", "1.2.5.4"]
*/
感谢您的投票,在审查时我注意到一个错误,我在上面的代码中更正了这个错误。
关于javascript - 如何获得 '1.2.5.4' 和 '1.2.5.3' 等字符串的最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10607582/