javascript - 自定义排序返回的数据

Int*_*els 3 javascript knockout.js

我有以下javascript和knockout js代码从xml文件返回三个值:

 var populateCategories = function (myId, mySize) {
    self.categoryOptions([]); //Empty the observable array
    var myCategories = getCategories(myId);
    var i = null;
    for (i = 0; myCategories.length > i; i += 1) {
        if (myCategories[i].ProductSize == mySize) {
            self.categoryOptions.push({ "label": myCategories[i].Reference });
        }
    }
Run Code Online (Sandbox Code Playgroud)

返回值(myCategories [i] .Reference)是"最佳","更好"和"好".我需要将这些值排序为"Good","Better","Best".按字母顺序排序不起作用,因为它将返回"好","最佳","更好".

返回的数据没有我可以用来对它们进行排序的另一个键/字段,所以我需要以某种方式在for循环上手动执行此操作.

如何对数据进行排序,以便最终结果为"良好","更好","最佳"?

Jua*_*des 8

使用sort函数并在进行比较时将字符串映射为数字.

self.categoryOptions.sort(function(a,b){
   var values = {Good: 0, Better: 1, Best: 2};
   return values[a.label] - values[b.label];
});
Run Code Online (Sandbox Code Playgroud)