首页 > 解决方案 > 如何在 Javascript 中找到“max”字符串?

问题描述

类似于如何在 JavaScript 中对字符串进行排序,但我想避免先排序,我只想要字符串的“最大”值。例如

f(['Aa', 'B', 'C', 'Acd', 'Ace']) == 'C'

我在想这是类似的.reduce东西

const f = (a) => a.reduce(someFunctionGoesHere)

某些功能有undefined检查的地方

更新:得到它的工作,但看起来丑陋。我想知道我是否可以减少该功能

const someFunctionGoesHere = (prev, current) => {
  if (!prev) {
    return current;
  }
  else if (prev.localeCompare(current) < 0) {
    return current;
  } else {
    return prev;
  }
};
const f = (a) => a.reduce(someFunctionGoesHere)

console.log(f(['Aa', 'B', 'C', 'Acd', 'Ace','CC']));

更新:这行得通,但看起来很丑。我想这是用 Javascript 本身可以做到的最好的。

const maxString = (a) => a.reduce((prev, current) => (!prev || prev.localeCompare(current) < 0) ? current : prev)

console.log(maxString(['Aa', 'B', 'C', 'Acd', 'Ace','CC']));

标签: javascript

解决方案


确实,reduce()将带您到那里:

const f = (array) => array.reduce((a, v) => v.localeCompare(a) > 0 ? v : a, '');

console.log(f(['Aa', 'B', 'C', 'Acd', 'Ace','CC']));


推荐阅读