我试着用两个字段排序,先说名字,再说姓氏。我如何链接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中的技术不能很好地工作或等同于上面的实现。
发布于 2021-07-29 04:54:24
深藏在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,这将在||之后触发结果的执行
https://stackoverflow.com/questions/68566915
复制相似问题