Sort array of objects

末鹿安然 提交于 2019-12-17 22:01:46

问题


I have an array of object literals like this:

var myArr = [];

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

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

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

How would I sort the array so it ascends by the 'score' parameter such that it would change to:

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

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

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

Thanks in advance.


回答1:


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

The way the array elements are sorted depends on what number the function passed in returns:

  • < 0 (negative number): a goes ahead of b
  • > 0 (positive number): b goes ahead of a
  • 0: In this cases the two numbers will be adjacent in the sorted list. However, the sort is not guaranteed to be stable: the order of a and b relative to each other may change.



回答2:


You could have a look at the Array.sort documentation on MDN. Specifically at the documentation about providing a custom compareFunction




回答3:


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 sortBy



来源:https://stackoverflow.com/questions/5876424/sort-array-of-objects

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!