Skip to content Skip to sidebar Skip to footer

How To Overload Comparator To Sort With UTF-8 And Different Locales

I have a collection of data: ['Alphabet','Zend','Ćwiczenia'] as result collection.sort I get: ['Alphabet','Zend','Ćwiczenia']. How to overload comparator to sort

Solution 1:

You need to set up a comparator method on your collection that uses localeCompare as its sort function.

Assuming your collection looks like

var c = new C([
    {name: "Alphabet"},
    {name: "Zend"},
    {name: "Ćwiczenia"}
]);

it would look like

var C = Backbone.Collection.extend({
    comparator: function(a, b) {
        return a.get('name').localeCompare(b.get('name'));
    }
});

and a demo

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>

Post a Comment for "How To Overload Comparator To Sort With UTF-8 And Different Locales"