我希望对包含电影标题字符串的数组进行排序,例如:
['Battleship','101 Dalmatians','Alice, Sweet Alice','40 Days of Night', '303 Fear Faith Revenge'...]
我的预期输出是:
101 Dalmatians
303 Fear Faith Revenge
40 Days of Night
Alice, Sweet, Alice
Battleship
我正在尝试以下接近的方法:
getMoviesInAlpOrder() {
const movieList = this.getMovies();
return movieList.sort(function(a, b) {
return a.title.toLowerCase() > b.title.toLowerCase();
});
}
这几乎可以工作,但在对数字与字符标题进行排序时确实存在一些冲突。有关如何最好地处理此类请求的任何建议?
最佳答案
虽然其他答案都是正确的,但我认为下面的解决方案会更灵活一些。
使用 localeCompare应该可以解决您的问题(如果您收到带有重音字符的文本,则可能会解决 future 的问题!)。尤其是电影片名,我希望有一些外国 Angular 色可以排序。
getMoviesInAlpOrder() {
const movieList = this.getMovies();
return movieList.sort(function(a, b) {
var lowerCaseA = a.title.toLocaleLowerCase();
var lowerCaseB = b.title.toLocaleLowerCase();
return lowerCaseA.localeCompare(lowerCaseB);
});
}
关于JavaScript:先按数字然后按字母对数组字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711382/