Javascript 对对象数组进行排序
我有一个对象文本数组,如下所示:Javascript 对对象数组进行排序,javascript,jquery,arrays,object,object-literal,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'
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'
}
提前感谢。尝试myArr.sort(函数(a,b){返回a.score-b.score})代码>
数组元素的排序方式取决于传入的函数返回的数字:
<0
(负数):a
位于b
>0
(正数):b
位于a
0
:在这种情况下,两个数字将在排序列表中相邻。但是,排序不能保证稳定:相对于彼此的a
和b
顺序可能会改变李>
您可以查看MDN上的。特别是在有关提供自定义比较功能的文档中
const myArray=[
{
“得分”:4分,
“name”:“foo”
},{
“分数”:1,
“name”:“bar”
},{
“得分”:3分,
'name':'foobar'
}
]
常量myOrderedArray=\ u0.sortBy(myArray,o=>o.name);
log(myOrderedArray)代码>
+1。看看你为什么使用-
而不是@Tomalak Geret'kal:当你输入评论时,我添加了一段解释。希望我是清楚的。这是一个很好的参考看看!谢谢,但遗憾的是它没有起作用。也没有:myArr.sort(函数(a,b){myArr[a].score-myArr[b].score});嘎,忘记了返回一个。我的错。修正了答案;现在可能有用了!对Scheme和Haskell的处理太多了:(你正在对一个对象数组进行排序。它们不再是文本了。