首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接Intl.Collator().compare?

如何链接Intl.Collator().compare?
EN

Stack Overflow用户
提问于 2021-07-29 04:22:20
回答 1查看 20关注 0票数 0

我试着用两个字段排序,先说名字,再说姓氏。我如何链接Intl.Collator().compare,这样我就不必做一些愚蠢的事情了,比如

代码语言:javascript
复制
const collator = new Intl.Collator()

const sorted = [...unsorted].sort( (a,b) => {
  const c0 = collator.compare(a.firstName, b.firstName)
  if (c0 === 0) {
    return collator.compare(a.lastName, b.lastName)
  }
  else {
    return c0;
  }
}

我基本上是在寻找一个等同于Java's Comparator.thenComparing()的工具

这是特定的字符串,特别是处理重音的Intl.Collate(),因此Javascript sort array by two fields中的技术不能很好地工作或等同于上面的实现。

EN

回答 1

Stack Overflow用户

发布于 2021-07-29 04:54:24

深藏在https://stackoverflow.com/a/46469791/242042中,但我将其改写为

代码语言:javascript
复制
const sorted = [...unsorted]
  .sort( (a,b) => 
    collator.compare(a.firstName, b.firstName) ||
    collator.compare(a.lastName, b.lastName)
  );

依赖于这样一个事实,即当等于时,结果为0,这将转换为false,这将在||之后触发结果的执行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68566915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档