所以我在互联网上徘徊,寻找js中的排序功能。这是问题所在。
我们有一个像这样的字符串数组:
['único', 'UNICO', 'árbol', 'ARBOL', 'cosas', 'COSAS', 'fútbol', 'FUTBOL']
我们想要这样的东西(大写优先):
['ARBOL', 'COSAS', 'FUTBOL', 'UNICO', 'árbol', 'cosas', 'fútbol', 'único']
或这样(小写优先):
['árbol', 'cosas', 'fútbol', 'único', 'ARBOL', 'COSAS', 'FUTBOL', 'UNICO']
事情是:真的很容易做到这一点:
['ARBOL', 'COSAS', 'FUTBOL', 'UNICO', 'cosas', 'fútbol', 'árbol','único']
使用
.sort();
函数,但我们不希望在结尾使用重音词,因此我们使用.sort(function(a, b) {
return a.localCompare(b);
});
但是我们最终得到了...
['ARBOL', 'árbol', 'COSAS', 'cosas', 'FUTBOL', 'fútbol', 'UNICO', 'único']
你们对如何将两者结合有任何想法吗?
最佳答案
您可以简单地扩展sort函数以在字符串的开头优先考虑大写字符:
const arr = ['ÁRBOL', 'único', 'UNICO', 'árbol', 'ARBOL', 'cosas', 'COSAS', 'fútbol', 'FUTBOL'];
function startsWithUppercase(str) {
return str.substr(0, 1).match(/[A-Z\u00C0-\u00DC]/);
}
arr.sort(function(a, b) {
if (startsWithUppercase(a) && !startsWithUppercase(b)) {
return -1;
} else if (startsWithUppercase(b) && !startsWithUppercase(a)) {
return 1;
}
return a.localeCompare(b);
});
console.log(arr);
关于javascript - 排序字符串数组时先将大写字母包括重音符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56253008/