【发布时间】:2018-04-17 14:19:09
【问题描述】:
我想根据布尔值对数组进行排序,但前提是第二个条件为真。
我可以像这样按布尔值对数组进行排序(我知道你也可以省略 if 部分,但我想看看它是否像这样工作。
posts = sortBy(posts, [function(post) {
if (post.featured_post === true) {
return post
}
}]);
但现在我想添加另一个条件:
posts = sortBy(posts, [function(post) {
if (post.featured_post === true && post.date >= today) {
return post
}
}]);
但这似乎不再起作用了。我收到非常随机的订单。 也许我也不明白如何将 sortBy 与函数一起使用,因此非常感谢您的帮助。
PS:我没有收到任何错误,只是排序不正确。
干杯
【问题讨论】:
-
只是出于好奇,post.date > 怎么能比今天呢?这是一个未来派的时间旅行帖子吗?或者这是某种过时的价值?
-
您可以添加您的
posts的样本吗? -
post.date和today的类型是什么?它们是整数吗?如果不是,它可能不会按照您认为的方式进行排序。 -
我不认为传递给
sortBy的函数意味着内部有分支语句。您通常返回要在排序中与之比较的值。在您的代码中,您说在某些元素中应该比较的是post,在其他一些元素中应该比较的是undefined。 -
@RyanWilson 这是关于事件的帖子,当它们被写入时,它是关于未来事件的。
标签: javascript arrays sorting lodash