排序对象数组

时间:2011-05-03 22:23:24

标签: javascript jquery arrays object object-literal

我有一个像这样的对象文字数组:

var myArr = [];

myArr[0] = {
   'score': 4,
   'name': 'foo'
}

myArr[1] = {
   'score': 1,
   'name': 'bar'
}

myArr[2] = {
   'score': 3,
   'name': 'foobar'
}

我如何对数组进行排序,使其通过'score'参数上升,使其更改为:

myArr[0] = {
   'score': 1,
   'name': 'bar'
}

myArr[1] = {
   'score': 3,
   'name': 'foobar'
}

myArr[2] = {
   'score': 4,
   'name': 'foo'
}

提前致谢。

3 个答案:

答案 0 :(得分:7)

尝试myArr.sort(function (a, b) {return a.score - b.score});

数组元素的排序方式取决于函数传递的返回值:

  • < 0(负数):a超前b
  • > 0(正数):b超前a
  • 0:在这种情况下,两个数字将在排序列表中相邻。但是,排序并不保证稳定:ab相对于彼此的顺序可能会发生变化。

答案 1 :(得分:3)

您可以查看MDN上的Array.sort documentation。特别是关于提供自定义比较功能的文档

答案 2 :(得分:0)

&#13;
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.js"></script>
&#13;
{{1}}
&#13;
&#13;
&#13;

lodash sortBy