假设我有一个像这样的对象数组
var outer = [
{
"name": "T1",
"inner": [
{
"type": "DAY"
},
{
"type": "MONTH"
},
{
"type": "WEEKLY"
}
]
},
{
"name": "T2",
"inner": [
{
"type": "DAY"
},
{
"type": "MONTH"
},
{
"type": "WEEKLY"
}
]
}
];
我基本上是试图对内部数组中的对象进行排序,以使“类型”按此顺序排列-MONTH,WEEKLY,DAY。像这样。
"inner": [
{
"type": "MONTH"
},
{
"type": "WEEKLY"
},
{
"type": "DAY"
}
]
有没有办法使用Lo-dash做到这一点?这是一个small fiddle。
我看到了similar question here,但这并不是我想要的,因为在我的情况下,顺序将是固定的,并且排序将不会基于随机字符串值。
最佳答案
尝试这个
var priority = [ "MONTH", "WEEKLY", "DAY" ];
outer.forEach(function(obj){
obj.inner.sort(function(a,b){
var ap = priority.indexOf(a.type);
var bp = priority.indexOf(b.type);
return ap-bp;
});
});
另一种方法,我想是更干净的方法(感谢T.J. Crowder :))
var priority = {MONTH: 0, WEEKLY: 1, DAY: 2};
outer.forEach(function(obj){
obj.inner.sort(function(a,b){
var ap = priority[a.type];
var bp = priority[b.type];
return ap-bp;
});
});
关于javascript - 基于字符串值的对象的破折号排序数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36615012/