问题
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 ofb
> 0
(positive number):b
goes ahead ofa
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 ofa
andb
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