这是我的数据示例:
[
{
"_id": "54ff1f21592a15378825aa33",
"timeline": "54fb49274e3e0c17271205d9",
"name": "Ade Idowu",
"first_name": "Ade",
"last_name": "Idowu",
"cohort": {
"name": "Class III",
"color": "#308cea"
},
"__v": 3,
"tasks": [
{
"_id": "54ff2eb0a6299969a08f8797",
"personName": "Ade Idowu",
"projectName": "yec",
"startDate": "2015-03-19T23:00:00.000Z",
"endDate": "2015-03-06T23:00:00.000Z",
}
]
},
{
"_id": "54ff1f21592a15378825aa33",
"timeline": "54fb49274e3e0c17271205d9",
"name": "Bola Idowu",
"first_name": "Bola",
"last_name": "Idowu",
"cohort": {
"name": "Class III",
"color": "#308cea"
},
"__v": 3,
"tasks": []
}
]
我想查询person.tasks
以显示任务数组为空和tasks.endDate
已过期的人员的名称。我希望使用javascript或lodash。
使用 lodash _.filter(collection, predicate):
遍历集合元素,返回 all 元素谓词返回真值。
谓词检查 iteree 的任务数组是否为空或任务 endDate 是否小于当前时间。
.getTime()
返回日期对象的 ms 值,以便您可以比较两个日期。如果要按其他粒度(例如小时、天)进行筛选,可以对此进行调整。
_.filter(dataObject, function(item){
var now = new Date();
return item.tasks.length == 0 || (newDate(item.tasks.endDate).getTime() < now.getTime());
});