这是我的数组,我正在尝试对它进行排序。但它没有按预期工作。我想将名称排序为降序..我该怎么做?
var d = '{"success":"1","message":[{"_id":"591b39df358f1d1f843231d1","area":"chennai","food":"idly","name":"saravana bavan","__v":0},{"_id":"591b39e0358f1d1f843231d2","area":"Dindigul","food":"Dosa","name":"Kattu Briyani","__v":0},{"_id":"591b39df358f1d1f843231d4","area":"Tirupur","food":"Poori","name":"French Loaf","__v":0}]}';
console.log(d);
var results = jQuery.parseJSON(d);
console.log(results.message);
results.message.sort(function(a, b) {
return b.name- a.name;
});
console.log(results.message);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
这是我的Fiddle
答案 0 :(得分:1)
您无法对字符串执行数学运算。
results.message.sort(function(a, b) {
if (b.name > a.name) { return 1 }
else if (b.name < a.name) { return -1 }
else { return 0 }
});
正如@bergi在下面的评论中提到的那样。 This深入解释了这个问题。
答案 1 :(得分:-1)
按如下方式更改比较功能:
var d = '{"success":"1","message":[{"_id":"591b39df358f1d1f843231d1","area":"chennai","food":"idly","name":"saravana bavan","__v":0},{"_id":"591b39e0358f1d1f843231d2","area":"Dindigul","food":"Dosa","name":"Kattu Briyani","__v":0},{"_id":"591b39df358f1d1f843231d4","area":"Tirupur","food":"Poori","name":"French Loaf","__v":0}]}';
console.log(d);
var results = jQuery.parseJSON(d);
console.log(results.message);
results.message.sort(function(a, b) {
return b.name.toLowerCase() > a.name.toLowerCase() ? 1 : -1;
});
console.log(results.message);