【发布时间】:2016-12-20 12:13:26
【问题描述】:
我有一组数据:
["Alphabet","Zend","Ćwiczenia"]
结果collection.sort 我得到:["Alphabet","Zend","Ćwiczenia"]。
如何重载 comparator 以使用 UTF-8 和不同语言环境进行排序?
【问题讨论】:
标签: javascript sorting backbone.js utf-8 locale
我有一组数据:
["Alphabet","Zend","Ćwiczenia"]
结果collection.sort 我得到:["Alphabet","Zend","Ćwiczenia"]。
如何重载 comparator 以使用 UTF-8 和不同语言环境进行排序?
【问题讨论】:
标签: javascript sorting backbone.js utf-8 locale
您需要在您的集合上设置一个comparator method,使用localeCompare 作为其排序功能。
假设你的收藏看起来像
var c = new C([
{name: "Alphabet"},
{name: "Zend"},
{name: "Ćwiczenia"}
]);
看起来像
var C = Backbone.Collection.extend({
comparator: function(a, b) {
return a.get('name').localeCompare(b.get('name'));
}
});
还有一个演示
var C = Backbone.Collection.extend({
comparator: function(a, b) {
return a.get('name').localeCompare(b.get('name'));
}
});
var c = new C([
{name: "Alphabet"},
{name: "Zend"},
{name: "Ćwiczenia"}
]);
console.log(c.pluck('name'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min.js"></script>
【讨论】:
var collator = new Intl.Collator(navigator.language, { sensitivity: 'base' })。然后在你的比较器函数中你会做:return collator.compare(a.get('name'), b.get('name'))