我正在尝试检查数组中是否存在当前日期,并返回存在日期的同一索引上存在的ID。
以下代码无法检查元素,我已经尝试过includes()
const results = [];
angular.forEach(getEventdate, function(value)
{
results.push({id:value.id,event_date:value.event_date}); });
if(results.some(result => result.event_date === current_date))
{
console.log('date exists!');
}
样本数组:
0: {id: 4, event_date: "2019-01-11"}
1: {id: 6, event_date: "2019-01-11"}
2: {id: 7, event_date: "2019-01-11"}
3: {id: 8, event_date: "2017-06-13"}
4: {id: 9, event_date: "2017-06-14"}
5: {id: 10, event_date: "2017-06-21"}
6: {id: 11, event_date: "2017-06-22"}
7: {id: 12, event_date: "2017-06-23"}
8: {id: 13, event_date: "2017-06-26"}
9: {id: 14, event_date: "2017-06-27"}
如果数组中存在当前日期,我需要id
答案 0 :(得分:0)
您可以使用$filter
。
var d = new Date();
var filteredDate = $filter('date')(d, 'yyyy-M-d');
var foundId = (array.filter(function(item) {
return item.event_date === filteredDate;
})[0] || {}).id;
如果找不到日期,它将返回undefined。
您需要将$filter
注入控制器。
答案 1 :(得分:0)
使用ES2015 +,您可以使用find
来获取id
,找到undefined
即可。
const { id } = values.find(item => item.event_date === currentDate) || {};
答案 2 :(得分:0)
如果要获取日期的第一个出现,请尝试使用find
,或者如果想要所有与日期匹配的出现,请尝试使用filter
。
例如使用find
const {id} = results.find(val=>{
return val.event_date === someDateString;
})
过滤器将返回与该值匹配的所有匹配项的数组。
const dates=results.filter(val=>{
return val.event_date === someDateString;
})