javascript - 如何链接 Intl.Collat​​or().compare?

标签 javascript sorting

我正在尝试使用两个字段进行排序,先说名字,然后说姓氏。如何链接Intl.Collator().compare所以我不必做一些愚蠢的事情,比如

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.Collat​​e() ,因此 Javascript sort array by two fields 中的技术效果不佳或与上面的实现等效。

最佳答案

深埋于https://stackoverflow.com/a/46469791/242042但我对其进行了调整

const sorted = [...unsorted]
  .sort( (a,b) => 
    collator.compare(a.firstName, b.firstName) ||
    collator.compare(a.lastName, b.lastName)
  );

依赖于这样一个事实:当相等时,结果为 0 并且转换为 false ,这会在 || 之后触发结果的执行>

关于javascript - 如何链接 Intl.Collat​​or().compare?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68566915/

相关文章:

php - 如果它们具有相同的值,则打乱关联数组中键的顺序?

php - 按元素大小对多维数组排序

javascript - 关闭子模态表单后父页面回发的问题

javascript - 如何在 Jquery UI 小部件中实现继承

python - 计算出平均值

javascript - 仅对数组的部分内容进行排序

java - 集合排序方法在链表上无法正常工作

javascript - React 路由器在 Express 服务器上不起作用

javascript - 从原型(prototype)子对象访问对象的属性

javascript - Tensorflow.js tf.browser.fromPixels() 必须是 HTMLVideoElement