我正在尝试使用两个字段进行排序,先说名字,然后说姓氏。如何链接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.Collate()
,因此 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.Collator().compare?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68566915/