Javascript 如何从日期数组返回特定年份?反应

Javascript 如何从日期数组返回特定年份?反应,javascript,Javascript,我有一个日期数组,我想创建一个函数,根据用户点击的内容返回2014年或2015年的所有日期 我尝试使用substring(),虽然它给了我一个2014年日期的数组,但它也返回了我不想要的2个未定义的。如何返回仅包含2014年日期的数组 const datefunc=()=>{ 施工日期=['2014-4-4','2014-5-4','2015-4-4','2015-3-4'] const dates=date.map((d)=>{ 如果(d.子串(0,4)==“2014”){ 返回d; } }

我有一个日期数组,我想创建一个函数,根据用户点击的内容返回2014年或2015年的所有日期

我尝试使用substring(),虽然它给了我一个2014年日期的数组,但它也返回了我不想要的2个未定义的。如何返回仅包含2014年日期的数组

const datefunc=()=>{
施工日期=['2014-4-4','2014-5-4','2015-4-4','2015-3-4']
const dates=date.map((d)=>{
如果(d.子串(0,4)==“2014”){
返回d;
}
})
console.log(日期)
}

datefunc()
数组.map在运行
date.map
时修改数组=>中的每个元素,并且仅在日期以“2014”开头时返回一个值,数组中的所有其他值将变为未定义

Array.filter
根据谓词=>筛选数组中的元素运行
date.filter
时,谓词为false的所有元素都将被排除在返回的数组中

将您的代码更改为此应该可以:

const datefunc=()=>{
施工日期=['2014-4-4','2014-5-4','2015-4-4','2015-3-4'];
const dates=date.filter((d)=>d.substring(0,4)==“2014”);
//你也可以用这个
//const dates=date.filter((d)=>d.startsWith('2014');
控制台日志(日期);
}
datefunc()
const datefunc=()=>{
施工日期=['2014-4-4','2014-5-4','2015-4-4','2015-3-4']
const dates=date.filter((d)=>d.substring(0,4)==“2014”)
console.log(日期)
}
datefunc()
const datesInYear=(日期,年份)=>{
返回日期。过滤器((x)=>x.包括(年));
};
施工日期=[“2014-4-4”、“2014-5-4”、“2015-4-4”、“2015-3-4”];

控制台日志(日期:2014年)
您可以在
filteredears
数组中添加所需的年份

const datefunc=()=>{
施工日期=['2014-4-4','2014-5-4','2015-4-4','2015-3-4']
const Filteredears=[2014];
const filteredates=dates.filter(date=>filteredears.includes(new date(date).getFullYear());
console.log(filteredDates)
}

datefunc()
您可以先将日期字符串转换为日期类型,然后使用“filter()”获取特定的年份日期。希望这对你有帮助

date = ["2014-4-4", "2014-5-4", "2015-4-4", "2015-3-4"];
convertedDate: Date[] = [];

getYearList() {
    this.date.forEach(x => {
      this.convertedDate.push(new Date(x));
    });

    this.convertedDate = this.convertedDate.filter(
      x => x.getFullYear() == 2014
    );
    console.log(this.convertedDate);
}

更可靠的方法是将字符串转换为日期。另外,由于您需要过滤掉日期,
map
在这里不起作用。即使对于错误的条件,即使没有返回任何内容,也会返回未定义的
。这就是为什么这两个未定义的值
const datefunc=()=>{
施工日期=['2014-4-4','2014-5-4','2015-4-4','2015-3-4']
const targetYears=[2014,2015];//在此处添加要筛选的年份
const dates=date.filter((d)=>{
const curYear=新日期(d).getFullYear();
返回目标耳朵。包括(当前年份);
})
console.log(日期)
}

datefunc()
This
dates.filter(x=>x.includes(year)
是无效语法!rly?-我将编辑并添加:-)亲爱的堆栈溢出协会-为什么这个答案有-2分它以高效的声明方式解决问题?在这个问题上与react无关?!是的,因为react是一个javascript库。。。为什么要在答案中添加不相关的内容。此外,您应该尽可能地制作一段代码,而不是简单地添加它。现在,我正在添加它。这能回答问题吗?非常感谢!一直以来,我都在使用错误的数组方法,我会按月过滤掉谁?有更优雅的方法吗?如果您将stirng转换为日期值,则可以使用Date.getMonth()…注意,尽管月份数字以0(=一月)开头,但函数似乎不必要地复杂,即使您不提供上下文,您也可以使用
this