@@ -80,23 +80,19 @@ export function getDateArray<T extends { date: string }>(
8080  const  {  diff,  add,  normalize }  =  createDateUnitFn ( unit ,  timezone ) ; 
8181  const  n  =  diff ( endDate ,  startDate )  +  1 ; 
8282
83-   function  findData ( date : dayjs . Dayjs )  { 
84-     const  target  =  data . find ( ( item )  =>  { 
85-       if  ( timezone )  { 
86-         return  normalize ( dayjs . tz ( item . date ,  timezone ) ) . unix ( )  ===  date . unix ( ) ; 
87-       }  else  { 
88-         return  normalize ( dayjs ( item . date ) ) . unix ( )  ===  date . unix ( ) ; 
89-       } 
90-     } ) ; 
91- 
92-     return  {  ...defaultItem ,  ...target  } ; 
93-   } 
83+   const  dataMap  =  new  Map < number ,  T > ( ) ; 
84+   data . forEach ( ( item )  =>  { 
85+     const  timestamp  =  timezone 
86+       ? normalize ( dayjs . tz ( item . date ,  timezone ) ) . valueOf ( ) 
87+       : normalize ( dayjs ( item . date ) ) . valueOf ( ) ; 
88+     dataMap . set ( timestamp ,  item ) ; 
89+   } ) ; 
9490
9591  for  ( let  i  =  0 ;  i  <  n ;  i ++ )  { 
9692    const  t  =  normalize ( add ( startDate ,  i ) ) ; 
97-     const  item  =  findData ( t ) ; 
93+     const  target  =  dataMap . get ( t . valueOf ( ) ) ; 
9894
99-     arr . push ( {  ...item ,  date : formatDate ( t ,  timezone )  }  as  T ) ; 
95+     arr . push ( {  ...defaultItem ,  ... target ,  date : formatDate ( t ,  timezone )  }  as  T ) ; 
10096  } 
10197
10298  return  arr ; 
0 commit comments