如何重新排序javascript数组中的对象?

时间:2016-03-17 12:30:25

标签: angularjs

我检索了一组测试对象:

self.tests = response.data.tests;

组成阵列的测试对象包含titlemodifiedBy字段。

是否有某种方法可以按标题升序对数组进行重新排序然后再修改为降序?

2 个答案:

答案 0 :(得分:3)

您可以尝试以下

self.tests.sort(function(a, b) {
     var diff = a.title.localeCompare(b.title);
     return diff == 0? b.modifiedBy.localeCompare(a.modifiedBy) : diff;
});

示例



var arr = [

  {"title" : "title1", "modifiedBy" : "david1"},
  {"title" : "title1", "modifiedBy" : "david3"},
  {"title" : "title2", "modifiedBy" : "david2"},
  {"title" : "title1", "modifiedBy" : "david2"},
  {"title" : "title2", "modifiedBy" : "david1"}
]

arr.sort(function(a, b) {
  var diff = a.title.localeCompare(b.title);
  return diff == 0? b.modifiedBy.localeCompare(a.modifiedBy) : diff;
});


console.dir(arr);




答案 1 :(得分:2)

如果你想用js代码对数据进行排序,@ nikhil的答案很棒。

正如我看到你的问题中有angularjs标记,如果你想在模板中对数据进行排序,那就容易多了。以下是提示(如果您希望按相反方向排序,请将+替换为-):

<div ng-repeat="obj in tests | orderBy: ['+title','+modifiedBy']>
   Title: {{obj.title}}
   Modified By: {{obj.modifiedBy}}
</div>