3

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

var myArr = [];

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

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

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

我将如何对数组进行排序,使其按“分数”参数上升,使其变为:

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

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

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

提前致谢。

4

3 回答 3

10

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

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

  • < 0(负数):a超前b
  • > 0(正数):b超前a
  • 0:在这种情况下,这两个数字将在排序列表中相邻。然而,排序并不能保证是稳定的:顺序ab相对的顺序可能会改变。
于 2011-05-03T22:27:02.713 回答
4

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

于 2011-05-03T22:27:17.400 回答
0

const myArray = [  
    {
   'score': 4,
   'name': 'foo'
},{
   'score': 1,
   'name': 'bar'
},{
   'score': 3,
   'name': 'foobar'
}
]

const myOrderedArray = _.sortBy(myArray, o => o.name);
console.log(myOrderedArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.js"></script>

lodash 排序依据

于 2018-04-10T09:50:52.080 回答