排序对象数组

kat*_*ine 1 javascript arrays jquery object object-literal

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

var myArr = [];

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

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

myArr[2] = {
   'score': 3,
   'name': 'foobar'
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

myArr[2] = {
   'score': 4,
   'name': 'foo'
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Tik*_*vis 7

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

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

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

  • +1。请参阅[此参考](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort) 了解为什么使用“-”而不是“&lt;”。 (2认同)

sta*_*del 5

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