Jquery数组排序不按预期工作

时间:2017-05-17 02:41:23

标签: javascript arrays sorting

这是我的数组,我正在尝试对它进行排序。但它没有按预期工作。我想将名称排序为降序..我该怎么做?



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;
&#13;
&#13;

这是我的Fiddle

2 个答案:

答案 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);