我不知道为什么排序不适用于这种情况:
var articolo_generico = new Array();
var query_example= "select descrizione,quantita,prezzo from table";
query_sqlite(query_example, function (result) {
var i = 0;
for (var index in result) {
var obj = result[index];
//the object values are strings
articolo_generico[i] = {'descrizione': obj.descrizione, 'quantita': obj.quantita, 'prezzo': obj.prezzo};
i++;
}
console.log("ARTICOLO GENERICO", articolo_generico);
articolo_generico = articolo_generico.sort(function (a, b) {
return a.descrizione > b.descrizione;
});
console.log("ARTICOLO GENERICO AFTER SORTING", articolo_generico);
});
但在这种情况下排序工作......
var articolo_generico = new Array();
articolo_generico[0] = {'descrizione': 'pizza', 'quantita': 5, 'prezzo': 3.00};
articolo_generico[1] = {'descrizione': 'apfelstrudel', 'quantita': 5, 'prezzo': 3.10};
articolo_generico[2] = {'descrizione': 'mojito', 'quantita': 5, 'prezzo': 3.20};
articolo_generico[3] = {'descrizione': 'bacardi', 'quantita': 5, 'prezzo': 3.50};
articolo_generico = articolo_generico.sort(function(a,b) { return a.descrizione > b.descrizione });
console.log(articolo_generico);
链接:https://jsfiddle.net/sk5h6j6o/6/
区别在哪里?
答案 0 :(得分:1)
可能是因为你的比较功能错了。如果a>>则比较函数必须返回1。 b,-1如果a< b,如果a == b,则为0。如果>您的方法返回true b,如果a< = b,则为false(0)。所以当一个< b,sort函数认为项目是相等的。
编写排序的正确方法是:
articolo_generico.sort(function(a,b) {
if (a.descrizione > b.descrizione) return 1;
if (a.descrizione < b.descrizione) return -1;
return 0;
});
有关详细信息,请参阅Array.prototype.sort()。