javascript - 如何在 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']));
解决方案
确实,reduce()
将带您到那里:
const f = (array) => array.reduce((a, v) => v.localeCompare(a) > 0 ? v : a, '');
console.log(f(['Aa', 'B', 'C', 'Acd', 'Ace','CC']));
推荐阅读
- spring - 为什么 Range 标头不适用于使用嵌入式 Tomcat 从 Spring Boot WAR 托管的静态资源?
- ruby-on-rails - 在 Linux 上安装 RoR 包时出现 Gem::FilePermissionError
- go - 如何在 Go Present 中将文本添加到小节?
- powershell - PowerShell SFTP 上传到特定端口号
- apache-flink - 如何在不同的节点上运行 Flink Job Manager 和 Task Manager?
- javascript - 运行一些 Ajax 代码在控制台中给出了一个未定义的值
- python - 可视化 cumsum python
- typescript - Maybe monad 的另一个名字是什么?
- druid - 将来自多个 kafka 主题的数据提取到 druid 中的单个数据源中
- ruby-on-rails - ActiveRecord 未提供所有数据库列