AngularJS:如何检查数组中是否存在日期并返回ID?

时间:2019-01-14 16:28:25

标签: javascript arrays angularjs

我正在尝试检查数组中是否存在当前日期,并返回存在日期的同一索引上存在的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

3 个答案:

答案 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;
})