javascript - 如何重载比较器以使用 UTF-8 和不同的语言环境进行排序

标签 javascript sorting backbone.js utf-8 locale

我有一组数据:

["Alphabet","Zend","Ćwiczenia"]      

作为 collection.sort 的结果,我得到:["Alphabet","Zend","Ćwiczenia"]

如何重载比较器以使用 UTF-8 和不同语言环境进行排序?

最佳答案

您需要设置一个 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>

关于javascript - 如何重载比较器以使用 UTF-8 和不同的语言环境进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41242116/

相关文章:

node.js - Backbone.js 和 Node.js 有什么区别?哪个最好?

javascript - MongoDB $regex 运算符不使用 mongoc 的 NodeJS

javascript - IE11 和 Mozilla css 转换的奇怪东西

javascript - 从 SP2013 迁移到 SP2019 时 jQuery 代码不起作用

java - 如何递归执行插入排序

javascript - 按首字母 Javascript 的字母顺序对对象进行排序和分组

java - 测试我的堆

css - 使用 CSS 的正文背景颜色未反射(reflect)在 html 页面上

javascript - 正则表达式:排除捕获可能存在或不存在的模式

testing - 如何使用带有 expresso/jasmine/<other> 的节点测试客户端 coffeescript/js