我想计算属性和order的对象,考虑计数结果。
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 34 }
];
// Sort by `user` in ascending order and by `age` in descending order.
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
从文档来看,这项工作,但我想要的是:
var users = [
{ 'user': 'barney', 'age': 34 ,Likes: [{objAA},{objBA}]},
{ 'user': 'fred', 'age': 48 ,Likes: [{objBA},{objBB},{objBC}]},
{ 'user': 'barney', 'age': 34 ,Likes: [{objDA},{objDA}]},
{ 'user': 'barney', 'age': 34 ,Likes: [{objCA}]}
];
orderBy喜欢计数
var users = [
{ 'user': 'fred', 'age': 48 ,Likes: [{objBA},{objBB},{objBC}]},
{ 'user': 'barney', 'age': 34 ,Likes: [{objAA},{objBA}]},
{ 'user': 'barney', 'age': 34 ,Likes: [{objDA},{objDA}]},
{ 'user': 'barney', 'age': 34 ,Likes: [{objCA}]}
];
这是否可以仅使用loadh?
我需要的是像
_.orderBy(users, ['user.Likes.length'], ['desc']);
_.orderBy(users, ['user.Likes'], ['desc']);
但是上面的代码不起作用但没有错误
我想使用orderBy函数来组合像
这样的排序_.orderBy(users, ['user.Likes','user', 'age'], ['desc','asc', 'desc']);
答案 0 :(得分:5)
你可以使用像这样的函数迭代器
_.orderBy(users, ['user', function (o) {
return o.likes.length;
}], ["asc", "asc"])
这是一个例子
var users = [{
'user': 'fred',
'age': 48,
'likes': [{c:1}, {c:2}, {c:3}]
}, {
'user': 'barney',
'age': 34,
'likes': [{c:1}, {c:2}, {c:3}, {c:3}]
}, {
'user': 'ammar',
'age': 25,
'likes': [{c:1}, {c:2}, {c:3}, {c:3}, {c:1}, {c:2}, {c:3}]
}, {
'user': 'boston',
'age': 34,
'likes': [{c:1}, {c:3}]
}, {
'user': 'obama',
'age': 34,
'likes': [{c:1}]
}, {
'user': 'barney',
'age': 34,
'likes': [{c:1}, {c:2}, {c:3}]
}];
document.write(JSON.stringify(_.orderBy(users, ['user', function (o) {
return o.likes.length;
}], ["asc", "asc"]), null, 4))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.6.1/lodash.min.js"></script>
答案 1 :(得分:2)
您可以将函数作为iteratee传递:
threeorfor(X):- member(3,X); member(4,X).
threeorfor([1,2,5]).
false
threeorfor([1,2,3]).
true
false
threeorfor([1,2,4]).
true