我有一个要求,我应该按对象属性和子属性排序,有没有更好的方法来处理它。
const testData=[{id:1,name:"test",notes:"test notes",child:[{name:"weight",value:3},{name:"category",value:"testCategory"},{name:"amount",value:2}]},{id:2,name:"test2",notes:"test notes2",child:[{name:"weight",value:4},{name:"category",value:"testCategory"},{name:"amount",value:3}]}]
我需要按名称(asc)和类别(desc)排序
我单独知道如下
_.orderBy(testData,['notes'],[asc])
_.orderBy(testData,(t)=>{
return _.filter(t.child, (c)=> {
return c.name == "category"
})[0]['value']
}
如何在单个订单中合并它们两个
答案 0 :(得分:1)
使用 iteratee函数创建一个 Array ,其中包含您要订购的数据。
例如,如果我们可以假设有.child
名为类别那么
_.orderBy(testData, data => {
return [
data.notes,
data.child.find(child => child.name === 'category').value
];
}, ['asc', 'desc']);
答案 1 :(得分:1)
使用多个标识迭代器
_.orderBy(
testData,
[
'notes',
function(item) {
return _.chain(item).get('child').find({name: 'category'}).get('value').value();
}
],
['asc', 'desc']
);