我有一个字符串数组,其中包含以点号表示的数字,如下所示:

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/

10-13 00:13