Lo-dash 根据字符串值对对象数组进行排序
Lo-dash sort array of objects based on string value
假设我有一个像这样的对象数组
var outer = [
{
"name": "T1",
"inner": [
{
"type": "DAY"
},
{
"type": "MONTH"
},
{
"type": "WEEKLY"
}
]
},
{
"name": "T2",
"inner": [
{
"type": "DAY"
},
{
"type": "MONTH"
},
{
"type": "WEEKLY"
}
]
}
];
我基本上是在尝试对内部数组中的对象进行排序,以便 'type' 按此顺序排列 - 月、周、日。像这样。
"inner": [
{
"type": "MONTH"
},
{
"type": "WEEKLY"
},
{
"type": "DAY"
}
]
有没有办法使用 Lo-dash 来做到这一点?这是一个small fiddle。
我看到了 ,但这并不是我想要的,因为在我的例子中,顺序是固定的,排序不会基于随机字符串值。
试试这个
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;
});
});
假设我有一个像这样的对象数组
var outer = [
{
"name": "T1",
"inner": [
{
"type": "DAY"
},
{
"type": "MONTH"
},
{
"type": "WEEKLY"
}
]
},
{
"name": "T2",
"inner": [
{
"type": "DAY"
},
{
"type": "MONTH"
},
{
"type": "WEEKLY"
}
]
}
];
我基本上是在尝试对内部数组中的对象进行排序,以便 'type' 按此顺序排列 - 月、周、日。像这样。
"inner": [
{
"type": "MONTH"
},
{
"type": "WEEKLY"
},
{
"type": "DAY"
}
]
有没有办法使用 Lo-dash 来做到这一点?这是一个small fiddle。
我看到了
试试这个
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;
});
});