我有一个地图m

var m = Immutable.fromJS({
    first: {a: 6, b: 3},
    second: {a: 3, b: 6},
    third: {a: 2, b: 4}
})


我想按属性m排序b中的子对象,如下所示:

[
    {a: 6, b: 3},
    {a: 2, b: 4},
    {a: 3, b: 6}
]


我在下面尝试过:

m.valueSeq().sort(function(a, b) {
  return a.get('b') > b.get('b')
}).toJS()


它在Chrome和node.js中运行良好,但是在OS X的Safari v8.0中,结果是

[
    {a: 6, b: 3},
    {a: 3, b: 6},
    {a: 2, b: 4}
]


它根本没有排序!这在我的React / Redux应用程序中造成了一些错误。怎么了正确的排序方式是什么?谢谢!

最佳答案

您的自定义比较功能要求返回1,-1或0,以便正确地对项目进行排序。

m.valueSeq().sort(function(a, b) {
  if (a.get('b') > b.get('b')) return 1;
  if (a.get('b') < b.get('b')) return -1;
  else return 0;
}).toJS();

关于javascript - 在Immutable.js中的Map中按子对象的属性对子对象进行排序的正确方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39558334/

10-12 12:20
查看更多