Javascript array.filter更改类型
下面的函数位于React类组件内部。 当函数被调用时,this.state.data.DateJavascript array.filter更改类型,javascript,arrays,reactjs,string,types,Javascript,Arrays,Reactjs,String,Types,下面的函数位于React类组件内部。 当函数被调用时,this.state.data.Date类型将更改为日期,而最初它是一个字符串。我需要这是一个字符串和困惑如何防止这种情况发生 getYear = e => { let year = e.target.value; let start = new Date("01/01/" + year); let end = new Date("12/31/" + year); let filtered = thi
类型
将更改为日期
,而最初它是一个字符串
。我需要这是一个字符串和困惑如何防止这种情况发生
getYear = e => {
let year = e.target.value;
let start = new Date("01/01/" + year);
let end = new Date("12/31/" + year);
let filtered = this.state.data.filter(data => {
let day = data.Date.slice(0, 2);
let month = data.Date.slice(3, 5);
let year = data.Date.slice(6, 10);
return (
new Date(year, month, day) >= start && new Date(year, month, day) <= end
);
});
this.setState({ setData: filtered });
};
getYear=e=>{
让年份=e.目标值;
开始日期=新日期(“01/01/”+年);
let end=新日期(“12/31/”+年);
let filtered=this.state.data.filter(数据=>{
设day=data.Date.slice(0,2);
让month=data.Date.slice(3,5);
让年份=data.Date.slice(6,10);
返回(
新日期(年、月、日)>=开始日期和新日期(年、月、日),如果控制台在getYear
函数的第一行记录this.state.data
,则日期是否仍为字符串?@EdLucas yes,格式均为“dd/mm/yyyy”您应该在像jsfiddle.net这样的平台上提供完整的可执行代码显示的代码中没有一个会改变数据
数组,例如状态.data[0]=…
或设置状态({data:…})
或内部对象,例如data.Date=…
。请提供代码的最小可复制示例。另请注意,因为您的数组由对象组成,并且您没有将数据克隆到setData
中,如果代码操作任何对象,它将同时反映在状态.data
和状态.setData
如果您在getYear
函数的第一行上控制台logthis.state.data
,那么您的日期仍然是字符串吗?@EdLucas yes,所有格式都是“dd/mm/yyyy”,您应该在类似jsfiddle.net的平台上提供完整的可执行代码。显示的代码中没有一个会改变数据
数组,例如state.data[0]=…
或设置状态({data:…})
或内部对象,例如data.Date=…
。请提供代码的最小可复制示例。另请注意,因为您的数组由对象组成,并且您没有将数据克隆到setData
中,如果代码操作任何对象,它将同时反映在状态.data
和状态.setData